2014-03-01 49 views
-1

我试图做这样的事情空白计数:修正使用正则表达式

输入:

"a  | b" 
"a|b" 
"a| b" 
"a |b" 

输出上述所有的输入必须是:

"a | b" 

我试过很多的东西,但无法实现我的意思。

+0

是|不变或它是任何特殊的字符 – Nps

+0

如果它发生在单行中多次,你需要举一个例子。 – paqogomez

回答

1

这人们也会这样做:

input = Regex.Replace(input, "\\s*\\|\\s*", " | "); 
1

我不认为你需要这个正则表达式。

var parts = myString.Split('|').Select(p => p.Trim()); 
var result = string.Join(" | ", parts); 

作为@ I4V的答案显示您可以拆分回车换行,然后处理每一行。

要使用我的回答这样试试这个:

var splitLines = input.Split("\r\n".ToCharArray(), StringSplitOptions.RemoveEmptyEntries); 
var result = splitLines.Select(eachLine => string.Join(" | ", eachLine.Split('|').Select(p => p.Trim()); 
0

出现这种情况多次在多行文本(有人对删除的答案)

string input = 
    @"a  | b 
    a|b 
    a| b 
    a |b"; 

var result = 
String.Join(Environment.NewLine, 
      input.Split("\r\n".ToCharArray(), StringSplitOptions.RemoveEmptyEntries) 
      .Select(line => String.Join(" ", Regex.Matches(line, @"\w|\|") 
                .Cast<Match>() 
                .Select(m => m.Value)))); 
0

你可以试试这个

Regex.Replace(str, "([a-zA-Z]+)(\s*)\|(\s*)([a-zA-Z]+)", "$1 | $4"); 

我可能弄错约$ 1,$ 4位置。它可能是“$ 4 | $ 5”。虽然它不是完整的答案,但可能会接近。