本文主要是介绍C# 替换某个字符,但不替换包含该字符的特定字符,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
日常的字符串替换函数Repace()可以直接替换,但是有时又需要排除特定的字符而不替换。如需要替换a,但不替换abc,这时使用Replace函数会误替换。
临时写了一个可以使用的:
//替换某个字符,但不替换包含该字符的特定字符
//如,替换a但不替换abc//specialStr 为自定义的特殊字符集List<string> specialStr = new List<string>()
{"True", "False"};public static string ReplaceVarWithoutOperators(string originalStr, string oldStr, string newStr){StringBuilder replaceStr = new StringBuilder();replaceStr.Append(originalStr);List<string> unReplaceString = new List<string>();foreach (var key in specialStr){if (key.IndexOf(oldStr, StringComparison.OrdinalIgnoreCase) > -1){unReplaceString.Add(key);}}var regex = new Regex("(?i)" + oldStr);var matches = regex.Matches(originalStr);for (int i = matches.Count -1; i>=0; i--){var matchIndex = matches[i].Index;bool isReplace = true;foreach (var item in unReplaceString){if ( (matchIndex+ item.Length) < originalStr.Length &&originalStr.Substring(matchIndex,item.Length).ToLower() == item.ToLower()){isReplace = false;}}if (isReplace)replaceStr = replaceStr.Replace(oldStr, newStr, matchIndex, 1);}return replaceStr.ToString();}
只是简单实现了功能,但是不知道是不是有更好的解决方法,存放在此以备留用。
这篇关于C# 替换某个字符,但不替换包含该字符的特定字符的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!