我正在尝试做这样的事情:
输入:
"a | b"
"a|b"
"a| b"
"a |b"
以上所有输入的输出必须为:
"a | b"
我尝试过很多东西,却无法实现我的意思。
答案 0 :(得分: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());
答案 1 :(得分:1)
这个也会这样做:
input = Regex.Replace(input, "\\s*\\|\\s*", " | ");
答案 2 :(得分: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))));
答案 3 :(得分:0)
你可以试试这个
Regex.Replace(str, "([a-zA-Z]+)(\s*)\|(\s*)([a-zA-Z]+)", "$1 | $4");
我可能误以为1美元,4美元的位置。它可能是&#34; $ 4 | $ 5#34 ;.虽然不是完整的答案,但可能很接近。