在特定符号之前和之后插入(单个)空格
本文关键字:插入 单个 空格 之后 符号 | 更新日期: 2023-09-27 18:11:37
我需要在特定符号之前和之后插入(单个)空格。"|"),像这样:
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);
但这不是我想要的,我的目标只是使用一个单一的模式。
我尝试了很多方法,但它仍然不像预期的那样工作。有人能帮我一下吗?
提前谢谢你!
谢谢@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中替换(字符串输入,字符串模式,MatchEvaluator评估器)
试试这个
string input = "|ABC|xyz |123||999| aaa| |BBB";
string pattern = @"['s]*[|]['s]*";
string replacement = " | ";
string output = Regex.Replace(input, pattern, replacement);
根据这个答案试试这个解决方案:
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
之间,但这是由于|
替换为|
。