javascript - 将数字(前面不带字符)替换为 _(下划线)

标签 javascript asp.net

我想用 _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 函数就是想要的答案。如果情况并非如此,请阅读 rkwanswer因为它提供了 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/

相关文章:

asp.net - 如何获取asp.net下拉列表的选定值并将其存储在 session 变量中?

javascript - 将 firebase 用户凭据 token 存储在本地或 session 存储上是否安全?

javascript - 无法将属性 'innerText' 设置为 null

javascript - 如何更改一个特定的 CSS 类

c# - 如何显示pdf和word文档的大小和图标?

c# - 如何将 ApplicationDbContext 传递给 ASP.NET MVC5 构造函数?

asp.net - SQL 精简版,无法连接到本地 sdf 文件

asp.net - 将字典绑定(bind)到 GridView

php - Javascript 和 PHP 之间的时间戳

javascript - jQuery 的动态宽度 = 高度