我得到了一个data-123字符串。

我如何删除数据-从字符串,而离开123?


当前回答

可以使用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

其他回答

使用match()和Number()返回一个数字变量:

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

// strNum = 123

下面是上面这句话的作用……工作中间向外:

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

可以使用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

你可以使用"data-123".replace('data-', ");,如前面提到的,但是replace()只替换匹配文本的FIRST实例,如果你的字符串是"data-123data-"那么

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

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

DEMO

所以如果你想在字符串中替换所有匹配的文本,你必须使用一个带有g标志的正则表达式:

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

你的输出是"123"

以及接下来

要做这样的事情,有很多不同的方法。进一步的方法可以如下:

让STR = 'data-123'; STR = STR .split('-')[1]; console.log('剩下的字符串是:\n' + str);

基本上,上面的代码将'-'字符处的字符串拆分为两个数组元素,并获得第二个数组元素,即索引为1的那个,忽略索引为0的第一个数组元素。

以下是一个线性版本:

console.log('剩下的字符串是:\n' + 'data-123'.split('-')[1]);

另一种可能的方法是向String原型添加一个方法,如下所示:

String.prototype.remove = function (s){返回this.replace(s, ")} //之后,它将像这样使用: A = 'ktkhkiksk kiksk ktkhkek kcklkekaknk kmkekskskakakgkekk '; A = A .remove('k'); console.log(一个);

注意,上面的代码片段只允许删除您感兴趣的字符串的第一个实例。但你可以做如下改进:

String.prototype.removeAll = function (s){返回this.replaceAll(s, ")} //之后,它将像这样使用: A = 'ktkhkiksk kiksk ktkhkek kcklkekaknk kmkekskskakakgkekk '; a = a. removeall ('k'); console.log(一个);

上面的代码片段将删除传递给该方法的字符串的所有实例。 当然,你不需要在String对象的原型中实现这些函数:如果你愿意,你也可以将它们作为简单的函数来实现(我将展示remove all函数,对于其他函数,你只需要使用replace而不是replaceAll,所以实现起来很简单):

函数strRemoveAll (s, r) { 返回s.replaceAll (r,”); } //你可以这样使用它: 让a = 'ktkhkiksk kiksk ktkhkek kcklkekaknk kmkekskskakakgkekk ' b = strRemoveAll (a,'k'); console.log (b);

当然,可能性要大得多。

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

它接受字符串或RegEx作为第一个参数,然后用第二个参数(字符串或生成字符串的函数)替换所有匹配项。

就目前的支持而言,在撰写本文时,除了IE,所有主流桌面浏览器*(甚至是Opera!)都采用了这种方法。对于移动设备,iOS SafariiOS 13.7+, Android Chromev85+和Android Firefoxv79+也都支持。

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

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

引用:

中数 我可以使用-当前浏览器支持信息吗 .replaceAll()的提案回购

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

//Example coutesy of MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replaceAll const p = 'The quick brown fox jumps over the lazy dog. If the dog reacted, was it really lazy?'; const regex = /dog/gi; try { console.log(p.replaceAll(regex, 'ferret')); // expected output: "The quick brown fox jumps over the lazy ferret. If the ferret reacted, was it really lazy?" console.log(p.replaceAll('dog', 'monkey')); // expected output: "The quick brown fox jumps over the lazy monkey. If the monkey reacted, was it really lazy?" console.log('Your browser is supported!'); } catch (e) { console.log('Your browser is unsupported! :('); } .as-console-wrapper: { max-height: 100% !important; }