我正在使用以下代码将“与”号替换为“ 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);
}
}
答案 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-");