繁体   English   中英

用C#替换字符串中的数字

[英]Replacing numbers in strings with C#

我以为我做一个正则表达式替换

Regex r = new Regex("[0-9]"); 
return r.Replace(sz, "#");

在名为aa514a3a.4s5的文件上。 它的工作完全符合我的期望。 它将替换所有数字,包括分机中的数字。 我如何使其不替换分机中的数字。 我尝试了许多正则表达式字符串,但是我开始认为它是全有还是全无模式,所以我不能这样做? 我需要将ext与字符串分开还是可以使用正则表达式?

这是为我做的:

(?<!\\.[0-9a-z]*)[0-9]

这会在句点后面产生负向后视(字符串不能出现在匹配的字符串之前),后跟零个或多个字母数字字符。 这样可以确保仅匹配您分机中没有的号码。

显然,[0-9a-z]必须替换为扩展名中期望的字符。

我认为您不能使用单个正则表达式来做到这一点。

最好将原始字符串拆分为基本和扩展名; 在基础上进行更换; 然后加入他们的行列。

是的,我想您最好将扩展名分开。

如果您确定字符串的末尾总是有一个3个字符的扩展名,那么最简单,最易读/可维护的解决方案是仅对

yourString.Substring(0,YourString.Length-4)

..然后附加

yourString.Substring(YourString.Length-4, 4)

为什么不在子字符串上运行正则表达式?

String filename = "aa514a3a.4s5";
String nameonly = filename.Substring(0,filename.Length-4);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM