繁体   English   中英

从C#中的字符串中的特定位置删除数字

[英]Remove numbers from a specific place in a string in C#

/abcd1/ef/gh001/d

将以上行读入字符串(字符串测试)

我想在abcd之后删除号码

所需的输出是/abcd/ef/gh001/d

我使用了以下代码

test = Regex.Replace(test, "[0-9]", "");

但是它会像这样删除行中的所有数字

/abcd/ef/gh/d

请帮忙!!

因为您知道数字在哪里,所以可以对表达式进行一些小的调整,使其变为: test = Regex.Replace(test, "(abcd)[0-9]+", "$1");

此表达式将匹配abcd1并将abcd放在组中。 然后稍后通过$1访问该组,因此基本上您将用abcd替换abcd1

另一种选择是test = Regex.Replace(test, "abcd[0-9]+", "abcd"); ,其作用相同。

您可以使用正向后视来确保仅替换abcd的数字:

test = Regex.Replace(test, @"(?<=abcd)\d+", "");

在上面的示例中,仅当一个或多个数字\\d+立即紧跟abcd字符串时,它们才会匹配。

演示。

就我而言,文本abcd不是常数-文本可以是任何东西

example1     /abcd1/ef/gh001/d
example2     /tmcy1/ef/gh001/d

但是字符串常量的位置。 它始终位于//之间的第一个

/**abcd1**/ef/gh001/d

您可以使用以下正则表达式替换:

(?i)^(/[a-z]+)\d+(.*)

并替换为$1$2

观看演示

暂无
暂无

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

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