gpt4 book ai didi

c# - 用坏字符替换字符串的坏字符

转载 作者:太空狗 更新时间:2023-10-29 18:18:59 24 4
gpt4 key购买 nike

我只是想知道替换随后必须替换的字符串字符的最简单方法是什么。

例如:

var str = "[Hello World]";
//enclose all occurences of [ and ] with brackets[]
str = str.Replace("[","[[]").Replace("]","[]]");
  • 期望的结果:[[]Hello World[]]
  • 实际结果:[[[]]Hello World[]]

原因显然是对已修改字符串的第二次替换。

那么如何用包含“坏”字符的字符替换所有出现的“坏”字符?


对所有方法的快速测量表明 StringBuilder是最有效的方法。

190kb 文件(全部以毫秒为单位)

  regexTime           40.5065  
replaceTime 20.8891
stringBuilderTime 6.9776

7MB 文件

  regexTime           1209.3529           
replaceTime 403.3985
stringBuilderTime 175.2583

顺便说一句,John 的直接 StringBuilder 方法比 Aggregate 快两倍Sehe 的方法。

我对它进行了扩展:

public static String EncloseChars(this string input, char[] charsToEnclose, String leftSide, String rightSide) {
if (charsToEnclose == null || leftSide == null || rightSide == null)
throw new ArgumentException("Invalid arguments for EncloseChars", charsToEnclose == null ? "charsToEnclose" : leftSide == null ? "leftSide" : "rightSide");
Array.Sort(charsToEnclose);
StringBuilder sb = new StringBuilder();
foreach (char c in input) {
if (Array.BinarySearch(charsToEnclose, c) > -1)
sb.Append(leftSide).Append(c).Append(rightSide);
else
sb.Append(c);
}
return sb.ToString();
}

"[Hello World]".EncloseChars(new char[]{'[', ']'},"[","]");

最佳答案

这是一个非常不酷的方法。但我认为它的优点是非常接近万无一失,而且不使用正则表达式(以防万一你不想使用正则表达式)。

StringBuilder sb = new StringBuilder();
foreach (char c in str.ToCharArray()) {
if (c == '[' || c == ']') {
sb.Append('[' + c + ']');
}
else {
sb.Append(c);
}
}
string result = sb.ToString();

关于c# - 用坏字符替换字符串的坏字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9264262/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com