我需要在特定符号之前和之后插入(单个)空格(例如" |"),如下所示:
string input = "|ABC|xyz |123||999| aaa| |BBB";
string output = "| ABC | xyz | 123 | | 999 | aaa | | BBB";
使用一些正则表达式模式可以很容易地实现这一点:
string input = "|ABC|xyz |123||999| aaa| |BBB";
// add space before |
string pattern = "[a-zA-Z0-9\\s*]*\\|";
string replacement = "$0 ";
string output = Regex.Replace(input, pattern, replacement);
// add space after |
pattern = "\\|[a-zA-Z0-9\\s*]*";
replacement = " $0";
output = Regex.Replace(output, pattern, replacement);
// trim redundant spaces
pattern = "\\s+";
replacement = " ";
output = Regex.Replace(output, pattern, replacement).Trim();
Console.WriteLine("Original String: \"{0}\"", input);
Console.WriteLine("Replacement String: \"{0}\"", output);
但这不是我想要的,我的目标只是使用一种模式。
我尝试了很多方法,但它仍然没有按预期工作。请有人帮帮我。
提前非常感谢你!
答案 0 :(得分:4)
谢谢@Santhosh Nayak。
我只是编写更多的C#代码来获得OP想要的输出。
string input = "|ABC|xyz |123||999| aaa| |BBB";
string pattern = @"[\s]*[|][\s]*";
string replacement = " | ";
string output = Regex.Replace(input, pattern, (match) => {
if(match.Index != 0)
return replacement;
else
return value;
});
我在MSDN中引用Regex.Replace(string input, string pattern, MatchEvaluator evaluator)。
答案 1 :(得分:1)
试试这个。
string input = "|ABC|xyz |123||999| aaa| |BBB";
string pattern = @"[\s]*[|][\s]*";
string replacement = " | ";
string output = Regex.Replace(input, pattern, replacement);
答案 2 :(得分:0)
var str = "|ABC|xyz |123||999| aaa| |BBB";
var fixed = Regex.Replace(str, patt, m =>
{
if(string.IsNullOrWhiteSpace(m.Value))//multple spaces
return "";
return " | ";
});
这会返回| ABC | xyz | 123 | | 999 | aaa | | BBB
我们在|(space)(space)|
和aaa
之间有BBB
,但这是由于|
替换为|
。