正则表达式用char替换空间

时间:2012-07-12 09:04:41

标签: .net

输入:Test 1 | Test 2 | Test 3 | Test 4 这里的char |就像一个分隔符。

有人可以给我正则表达式或任何简单的方法来获取这样的字符串。 这不应影响Test3之间的空间。

输出应为Test 1|Test 2|Test 3|Test 4

不只有一个空间。空间可能不止一个。

3 个答案:

答案 0 :(得分:0)

这可以用作RegularExpression来匹配管道之前和之后的多个空格

string pattern = @"\s+\u007C\s+";
string search = "Test 1 | Test 2 | Test 3 | Test 4";
string result = Regex.Replace(search, pattern, "|");

\s+匹配一个或多个空格
\u007C匹配垂直管道| - 管道是正则表达式的保留字符,因此您必须使用unicode约定或使用\转义管道,因此模式将是

string pattern = @"\s+\|\s+";

另外,如果你想要考虑一个混合的情况,你可以在模式改变之前或之后有一个没有空格的管道:

string pattern = @"\s*\|\s*";

\s*表示零个或多个空格

答案 1 :(得分:0)

string text = "Test 1 | Test 2 | Test 3 | Test 4";

text = text.Replace(" | ", "|").Replace(" |", "|").Replace("| ", "|");

答案 2 :(得分:0)

非正则表达方式是:

var tokens = input.Split('|');
foreach (var token in tokens)
{
    token.Trim();
}
string output = string.Join("|", tokens);

这会在分隔符上拆分字符串,修剪单个标记以删除前导和尾随空格,然后使用分隔符重新加入标记。