ChatGPT解决这个技术问题 Extra ChatGPT

如何从字符串中删除文本?

我有一个 data-123 字符串。

如何在离开 123 的同时从字符串中删除 data-


C
Community

var ret = "data-123".replace('data-','');控制台.log(ret); //打印:123

Docs.

对于要丢弃的所有事件,请使用:

var ret = "data-123".replace(/data-/g,'');

PS:replace函数返回一个新字符串,原字符串不变,所以使用replace()调用后的函数返回值。


如何替换多个表达式?您是否必须使用多个 .replace 调用?
对于要丢弃的所有事件,您可以使用 replaceAll
M
Meetai.com

这与 jQuery 没有任何关系。您可以为此使用 JavaScript replace 函数:

var str = "data-123";
str = str.replace("data-", "");

您还可以将正则表达式传递给此函数。在以下示例中,它将替换除数字以外的所有内容:

str = str.replace(/[^0-9\.]+/g, "");

你能解释一下正则表达式的作用吗?我不明白为什么它会替换除数字之外的字符串(如果指示了 0-9)。
@rotimi-best [^0-9\.] 表示它会捕获任何数字或句点的字母。注意第一个方括号后面的插入符号。
l
laaposto

如前所述,您可以使用 "data-123".replace('data-','');,但因为 replace() 仅替换匹配文本的 FIRST 实例,如果您的字符串类似于 "data-123data-",则

"data-123data-".replace('data-','');

只会替换第一个匹配的文本。您的输出将是 "123data-"

DEMO

因此,如果您希望将所有匹配的文本替换为字符串,则必须使用带有 g 标志的正则表达式,如下所示:

"data-123data-".replace(/data-/g,'');

您的输出将是 "123"

DEMO2


M
Mr. J

如果您事先知道需要从原始字符串中切出多少个字符,则可以使用 slice()。它返回给定起点到终点之间的字符。

string.slice(start, end);

以下是一些展示其工作原理的示例:

var mystr = ("data-123").slice(5); // This just defines a start point so the output is "123"
var mystr = ("data-123").slice(5,7); // This defines a start and an end  so the output is "12"

Demo


我想删除从字符位置开始到结尾的字符串。
J
James Hill

普通的旧 JavaScript 就足够了——对于这样一个简单的任务,jQuery 不是必需的:

var myString = "data-123";
var myNewString = myString.replace("data-", "");

请参阅: .replace() docs on MDN 了解更多信息和用法。


A
Ajitej Kaushik

前任:-

var value="Data-123";
var removeData=value.replace("Data-","");
alert(removeData);

希望这对你有用。


T
Tsafack Dagha cedrick

1-如果是您的字符串中的序列:

let myString = "mytest-text";
let myNewString = myString.replace("mytest-", "");

答案是文字

2-如果您想删除前 3 个字符:

"mytest-text".substring(3);

答案是 est-text


H
HoldOffHunger

我做的这个小功能一直对我有用:)

String.prototype.deleteWord = function (searchTerm) {
    var str = this;
    var n = str.search(searchTerm);
    while (str.search(searchTerm) > -1) {
        n = str.search(searchTerm);
        str = str.substring(0, n) + str.substring(n + searchTerm.length, str.length);
    }
    return str;
}

// Use it like this:
var string = "text is the cool!!";
string.deleteWord('the'); // Returns text is cool!!

我知道这不是最好的,但它一直对我有用:)


您在答案中展示了字符串的替换功能如何或多或少地工作,但实际上仅使用字符串的替换功能比您的代码更简单,更容易!
JavaScript 新手,但这是唯一对我有用的解决方案。我不同意上述评论,因为这是一个 while 循环,与简单的替换不同。
佚名

我习惯了 C# (Sharp) String.Remove 方法。在 Javascript 中,没有字符串的删除函数,但有 substr 函数。您可以使用 substr 函数一次或两次从字符串中删除字符。您可以使用以下函数将开始索引处的字符删除到字符串的末尾,就像 c# 方法首先重载 String.Remove(int startIndex) 一样:

function Remove(str, startIndex) {
    return str.substr(0, startIndex);
}

和/或您还可以使用以下函数来删除起始索引和计数处的字符,就像 c# 方法第二个重载 String.Remove(int startIndex, int count) 一样:

function Remove(str, startIndex, count) {
    return str.substr(0, startIndex) + str.substr(startIndex + count);
}

然后您可以根据需要使用这两个功能或其中之一!

例子:

alert(Remove("data-123", 0, 5));

输出:123


A
ARC
str.split('Yes').join('No'); 

这将从原始字符串中替换该特定字符串的所有出现。


B
Brett DeWoody

使用 match()Number() 返回 number 变量:

Number(("data-123").match(/\d+$/));

// strNum = 123

这就是上面的语句所做的......在中间工作:

str.match(/\d+$/) - 返回一个数组,其中包含与 str 末尾任意长度数字的匹配项。在这种情况下,它返回一个包含单个字符串项 ['123'] 的数组。 Number() - 将其转换为数字类型。因为从 .match() 返回的数组包含单个元素 Number() 将返回数字。


K
Kamil Kiełczewski

表现

今天 2021.01.14,我在 Chrome v87、Safari v13.1.2 和 Firefox v84 上对 MacOs HighSierra 10.13.6 进行测试,以获取所选解决方案。

结果

适用于所有浏览器

解决方案 Ba、Cb 和 Db 对于长字符串是最快的/最快的

解决方案 Ca, Da 对于短字符串来说是最快的/最快的

解决方案 Ab 和 E 对于长字符串来说很慢

解决方案 Ba、Bb 和 F 对于短字符串来说很慢

https://i.stack.imgur.com/jwLqa.png

细节

我执行 2 个测试用例:

短字符串 - 10 个字符 - 你可以在这里运行它

长字符串 - 1 000 000 个字符 - 你可以在这里运行它

以下代码段介绍了解决方案 Aa Ab Ba Bb Ca Cb Da Db E F

// https://stackoverflow.com/questions/10398931/how-to-strToRemove-text-from-a-string // https://stackoverflow.com/a/10398941/860099 函数 Aa(str,strToRemove) {返回 str.replace(strToRemove,''); } // https://stackoverflow.com/a/63362111/860099 函数 Ab(str,strToRemove) { return str.replaceAll(strToRemove,''); } // https://stackoverflow.com/a/23539019/860099 函数 Ba(str,strToRemove) { 让 re = strToRemove.replace(/[.*+?^${}()|[\]\\] /g, '\\$&'); // 正则表达式 escape char return str.replace(new RegExp(re),''); } // https://stackoverflow.com/a/63362111/860099 函数 Bb(str,strToRemove) { 让 re = strToRemove.replace(/[.*+?^${}()|[\]\\] /g, '\\$&'); // 正则表达式 escape char return str.replaceAll(new RegExp(re,'g'),''); } // https://stackoverflow.com/a/27098801/860099 函数 Ca(str,strToRemove) { let start = str.indexOf(strToRemove);返回 str.slice(0,start) + str.slice(start+strToRemove.length, str.length); } // https://stackoverflow.com/a/27098801/860099 函数 Cb(str,strToRemove) { let start = str.search(strToRemove);返回 str.slice(0,start) + str.slice(start+strToRemove.length, str.length); } // https://stackoverflow.com/a/23181792/860099 函数 Da(str,strToRemove) { let start = str.indexOf(strToRemove);返回 str.substr(0, start) + str.substr(start + strToRemove.length); } // https://stackoverflow.com/a/23181792/860099 函数 Db(str,strToRemove) { let start = str.search(strToRemove);返回 str.substr(0, start) + str.substr(start + strToRemove.length); } // https://stackoverflow.com/a/49857431/860099 函数 E(str,strToRemove) { return str.split(strToRemove).join(''); } // https://stackoverflow.com/a/45406624/860099 函数 F(str,strToRemove) { var n = str.search(strToRemove); while (str.search(strToRemove) > -1) { n = str.search(strToRemove); str = str.substring(0, n) + str.substring(n + strToRemove.length, str.length); } 返回字符串; } 让 str = "data-123";让 strToRemove = "数据-"; [Aa,Ab,Ba,Bb,Ca,Cb,Da,Db,E,F].map( f=> console.log(`${f.name.padEnd(2,' ')} ${f( str,strToRemove)}`));此 Shippet 仅提供性能测试中使用的功能 - 它本身不执行测试!

这是 chrome 的示例结果

https://i.stack.imgur.com/kb3hi.png


z
zcoop98

另一种替换字符串所有实例的方法是使用新的(截至 2020 年 8 月)String.prototype.replaceAll() method

它接受字符串或 RegEx 作为其第一个参数,并将找到的所有匹配项替换为其第二个参数(字符串或生成字符串的函数)。

就支持而言,在撰写本文时,此方法已在所有主要桌面浏览器*(甚至 Opera!)的当前版本中采用,IE 除外。对于移动设备,还支持 iOS SafariiOS 13.7+、Android Chromev85+ 和 Android Firefoxv79+。

* 这包括 Edge/Chrome v85+、Firefox v77+、Safari 13.1+ 和 Opera v71+

用户更新到受支持的浏览器版本需要时间,但现在有了广泛的浏览器支持,时间是唯一的障碍。

参考:

MDN

我可以使用 - 当前浏览器支持信息

.replaceAll() 的 TC39 提案回购

您可以在下面的代码段中测试您当前的浏览器:

//MDN 示例:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replaceAll const p = '快速棕色狐狸跳过懒狗。如果狗有反应,它真的很懒吗?常量正则表达式 = /dog/gi;尝试 { console.log(p.replaceAll(regex, 'ferret')); // 预期输出:“敏捷的棕色狐狸跳过懒惰的雪貂。如果雪貂有反应,它真的是懒惰吗?” console.log(p.replaceAll('dog', 'monkey')); // 预期输出:“敏捷的棕色狐狸跳过了懒猴。如果猴子有反应,那真的是懒惰吗?” console.log('您的浏览器被支持!'); } catch (e) { console.log('你的浏览器不被支持!:('); } .as-console-wrapper: { max-height: 100% !important; }


W
Willie

确保如果您在循环中替换字符串,则在每次迭代中启动一个新的正则表达式。截至 21 年 9 月 21 日,这仍然是一个已知问题,Regex 基本上错过了所有其他匹配。当我第一次遇到这个时,这让我陷入了循环:

yourArray.forEach((string) => {
    string.replace(new RegExp(__your_regex__), '___desired_replacement_value___');
})

如果您尝试这样做,如果只有其他每个都有效,请不要感到惊讶

let reg = new RegExp('your regex');
yourArray.forEach((string) => {
    string.replace(reg, '___desired_replacement_value___');
})

S
S. Hesam
const newString = string.split("data-").pop();
console.log(newString);