我想用 _number 替换字符串中的数字。我们必须只获取不以字符开头的数字,并用下划线替换它们。 要求:我有一个字符串,因此在处理时我想用 _Constant 替换常量。 示例字符串:“(a/(b1/8))*100” 预期输出:“(a/(b1/_8))*_100”
请建议如何在 ASP.NET 代码后面执行此操作。
提前致谢。
最佳答案
您需要一个正则表达式和替换函数:
var str = '(a/(b1/8))*100';
alert( str.replace(/([^a-zA-Z0-9])([0-9])/g, '$1_$2') );
那么,这是怎么回事?
/
标记正则表达式的开始和结束(最适合此任务的工具)。[^a-zA-Z0-9]
表示“不是字母或数字”。[0-9]
表示“数字”。- 它们一起表示“不是字母或数字后跟数字的东西”。
- 末尾的 g 表示“找到所有这些”。
()
将正则表达式分为 $1 和 $2 两部分'$1_$2'
是输出格式。
因此,该表达式翻译为:
Find all cases where a digit follows a non-alphanumeric. Place a '_' between the digit and the non-alphanumeric. Return the result.
编辑
顺便说一句,当我读到这个问题时,我以为 JS 函数就是想要的答案。如果情况并非如此,请阅读 rkw
的 answer因为它提供了 C# 版本。
编辑2
Bart 提出了一个很好的观点,即在字符串以数字开头的情况下,上述方法将会失败。其他语言可以通过负回顾来解决这个问题,但 JavaScript 不能(它不支持负回顾)。因此,必须使用替代函数(对 substr( 0, 1 ) 进行 NaN 测试似乎是最简单的方法):
var str = '(a/(b1/8))*100';
var fin = str.replace(/([^a-zA-Z0-9])([0-9])/g, '$1_$2');
if( !isNaN( fin.substr( 0, 1 ) ) ) fin = "_" + fin;
alert( fin );
关于javascript - 将数字(前面不带字符)替换为 _(下划线),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6992006/