我想用_number替换字符串中的数字。我们必须只获取不以字符开头的数字并用下划线替换它们。 要求:我有一个字符串,所以在处理时我想用_Constant替换常量。 示例字符串:“(a /(b1 / 8))* 100” 输出预期:“(a /(b1 / _8))* _ 100”
请在asp.net代码中建议如何执行此操作。
提前致谢。
答案 0 :(得分:2)
你需要一个正则表达式和替换函数:
var str = '(a/(b1/8))*100';
alert( str.replace(/([^a-zA-Z0-9])([0-9])/g, '$1_$2') );
那么,发生了什么?
/
标记正则表达式的开头和结尾(最适合此任务的工具)。[^a-zA-Z0-9]
表示“没有任何字母或数字”。[0-9]
表示“数字”。 ()
将正则表达式分为两部分$ 1和$ 2 '$1_$2'
是输出格式。因此,表达式转换为:
查找数字跟随非字母数字的所有情况。在数字和非字母数字之间放置一个“_”。返回结果。
顺便说一句,当我读到这个问题时,我认为JS功能是理想的答案。如果不是这种情况,请阅读rkw
的{{3}},因为它提供了C#版本。
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 );
答案 1 :(得分:1)
与cwallenpoole相同,只是在C#代码背后 <击> 撞击>
<击>string str = '(a/(b1/8))*100';
str = Regex.Replace(str, '([^a-zA-Z])([0-9])', '$1_$2');
击> <击> 撞击>
<强>更新强>:
string str = "(a/(b1/8))*100";
str = Regex.Replace(str, "([^a-zA-Z0-9]|^)([0-9])", "$1_$2");
答案 2 :(得分:0)
为什么不试试正则表达式: 那就是:
搜索正则表达式:“[0-9] +”&amp;替换为“_ + regex。”
即
String RegExPattern = @"[0-9]+";
String str = "(a/(b1/8))*100";
Regex.Replace(str, RegExPattern, "_$1");
来源:http://msdn.microsoft.com/en-us/library/ms972966.aspx
希望有所帮助!