如何用一个人替换2个或更多的空格?我需要用另一种模式替换模式

时间:2015-06-11 21:10:18

标签: c# regex

我不擅长使用正则表达式,所以这就是我的问题...... 我有这个字符串

#   32 #asd #31223 #   asdf

我需要得到这个:

# 32 Nasd #31223 N asdf

让我解释一下:

1.-我需要删除2个或更多单个空格,我认为解决了:

Regex.Replace( RemoveDiacritics(text.ToUpper().Trim()), @"[ ]{2,}", @" ", RegexOptions.None);

2.-之后,如果正则表达式找到一个#,它需要检查下一个字符,如果它是一个数字,它没关系,但如果#的下一个字符是一个字母,我需要替换一个字母N。

你能帮我解决第二个要求吗?

谢谢!

2 个答案:

答案 0 :(得分:1)

我会两次通过。

第一遍:

var normalized = Regex.Replace(inputStr, @"[\s]{2,}"," ");

第二遍:

var nReplaced  = Regex.Replace(normalized , @"#(?!\s*\d)", "N");

第二个正则表达式只是使用负面预测来查找#后跟

非数字,如果有,则将其替换为N

答案 1 :(得分:0)

var result = Regex.Replace("#   32 #asd #31223 #   asdf", @"[\s]{2,}"," ",RegexOptions.None);

result = Regex.Replace(result, @"#(\D)", new MatchEvaluator((m)=>
            {
                return "N" + m.Groups[1].Value;
            }));
相关问题