在特定符号之前和之后插入(单个)空格

本文关键字:插入 单个 空格 之后 符号 | 更新日期: 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)|aaaBBB之间,但这是由于|替换为|