gpt4 book ai didi

javascript 从字符串中删除数字 (n1,n2,...)

转载 作者:行者123 更新时间:2023-11-28 19:54:33 25 4
gpt4 key购买 nike

我有一个这样的字符串

var s="15,4,6,8,10,3";

我需要使用 js 创建一个函数,如下所示:

注意:字符串中的数字是唯一的

removeNumber(4);

应该返回:

s="15,6,8,10,3";

这个:

removeNumber(15);

应该返回:

s="4,6,8,10,3";

最佳答案

一种可能的方法:

var s = "15, 4, 6, 8, 10, 3";
function removeNumber(str, num) {
var reg = new RegExp('(?:\\D+|^)' + num + '(?=\\D|$)');
return str.replace(reg, '').replace(/^\D*/, '');

// or with a single replace:
// var reg = new RegExp('^' + num + '(?:\\D+|$)|\\D+' + num + '(?=\\D|$)');
// return str.replace(reg, '');
}

这适用于分隔数字的任意数量的空格。事实上,它可以处理任何分隔数字的东西。 )

<小时/>

说明:对于给定的数字(假设是 42),将创建以下正则表达式:

/(?:\D+|^)42(?=\D|$)/

这读作确保“42”子字符串是...

  • 前面至少有一个非数字符号,或者位于字符串的开头
  • 后跟一个非数字符号,或者位于字符串的最末尾

这些规则对于防止在 424442 中捕获 42 是必要的(感谢@Newbo.O 提到这一点)。

请注意,目标数字前面的非数字符号与数字本身一起被正则表达式消耗。这在所有情况下都很棒 - 但是当数字是该字符串中的第一个数字时,就会出现一个复杂的情况:您实际上必须删除该数字以及后面的符号,而不是前面的符号。

虽然可以在单个正则表达式中解释这种情况(交替):

/^42(?:\D+|$)|\D+42(?=\D|$)/

...使用简单的模式进行最终扫描要容易得多:

/^\D*/

...即“替换字符串开头的所有非数字符号”。

关于javascript 从字符串中删除数字 (n1,n2,...),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22806462/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com