static void Main(string[] args) { //重复分割符问题的实践和演示 //实践运用的场景||、|同为分割符,2替换为空时出现的|||情况 string content = "1234567890"; string replaceOptions = "1|a||2|||3|||4|c"; Console.WriteLine(replaceContent(content, replaceOptions)); Console.ReadKey(); }
/** * 适用于1|a||2|||3|c模式分割,兼容多个|||的情况 **/ public static string replaceContent(string content, string filterWord) { ArrayList filterWhiteSpace = new ArrayList(); spliteMuliSymbol(filterWord, ref filterWhiteSpace); for (int i = 0; i < filterWhiteSpace.Count; i++) { string[] replaceArr = filterWhiteSpace[i].ToString().Split('|'); content = Regex.Replace(content, replaceArr[0], replaceArr[1]); } return content; }
public static void spliteMuliSymbol(string filterWord, ref ArrayList filterWhiteSpace) { //判断是否存在替换为空的情况 if (filterWord.Contains("|||")) { int whiteSpaceIndex = filterWord.IndexOf("|||"); ArrayList arrHalf = new ArrayList(); string firstHalf = filterWord.Substring(0, whiteSpaceIndex + 1); string latterHalf = filterWord.Substring(whiteSpaceIndex + 3); arrHalf.Add(firstHalf); arrHalf.Add(latterHalf); for (int i = 0; i < arrHalf.Count; i++) { spliteMuliSymbol(arrHalf[i].ToString(), ref filterWhiteSpace); } } else { string[] filterWordArray = Regex.Split(filterWord, @"||"); foreach (string temp in filterWordArray) { filterWhiteSpace.Add(temp); } } }