替换单词并删除多余的空格

时间:2018-11-21 17:33:11

标签: c# asp.net regex

我正在使用以下代码将“与”号替换为“ and”。我遇到的问题是,当我有多个与号彼此相邻时,我最终在“和”之间使用两个空格(“-和-和-”而不是“-和-”)。有什么方法可以将底部的两个正则表达式替换组合为一个,而只删除与号之间的重复间隔?

using System;
using System.Text.RegularExpressions;

public class Program
{
    public static void Main()
    {
        var replacedWord = Regex.Replace("&&", @"\s*&\s*", " and ");
        var withoutSpaces = Regex.Replace(replacedWord, @"\s+and\s+", " and ");
        Console.WriteLine(withoutSpaces);
    }
}

2 个答案:

答案 0 :(得分:2)

使用String扩展方法进行重复,

public static string Repeat(this string s, int n) => new StringBuilder(s.Length * n).Insert(0, s, n).ToString();

您可以使用Regex.Replace的lambda(代理)版本:

var withoutSpaces = Regex.Replace("a&&b", @"(\s*&\s*)+", m => " "+"and ".Repeat(m.Groups[1].Captures.Count));

答案 1 :(得分:0)

string input = "some&very&&longa&&&string";
string pattern = "&";
string x = Regex.Replace(input, pattern, m =>(input[m.Index-1] == '&' ? "": "-") + "and-");