gpt4 book ai didi

c# - 如何为 var 输入制作不区分大小写的字典 - C#

转载 作者:太空宇宙 更新时间:2023-11-03 18:53:32 26 4
gpt4 key购买 nike

var fruitDictionary = new Dictionary<string, string>(StringComparer.InvariantCultureIgnoreCase) { { "Apple" , "Fruit" }, { "Orange", "Fruit" }, { "Spinach", "Greens" } };

TextRange textRange = new TextRange(richTextBox1.Document.ContentStart, richTextBox1.Document.ContentEnd);
string data = textRange.Text;
var output = new StringBuilder(data);

foreach (var kvp in fruitDictionary)
output.Replace(kvp.Key, kvp.Value);

var result = output.ToString();
richTextBox2.AppendText(result);

它可以正常工作,但如果输入的格式不正确,它将无法工作。例如在 Apple 上输出是 Fruit 但在 apple 上它仍然显示 apple

最佳答案

通过将字典的比较器设置为 StringComparer.InvariantCultureIgnoreCase,键查找变得文化和大小写不变——即 var a = fruitDictionary["apple"];var b = fruitDictionary["ApPlE"] 将产生相同的结果。也就是说,您对与此无关的 StringBuilder 实例执行替换操作。 StringBuilder.ReplaceString.Replace 都没有让您配置字符串比较选项的重载,因此您必须创建一个扩展方法。

public static string Replace(this string str, string oldValue, string newValue,
StringComparison comparison = StringComparison.Ordinal)
{
var index = str.IndexOf(oldValue, comparison);
while (index >= 0)
{
str = str.Remove(index, oldValue.Length);
str = str.Insert(index, newValue);
index = str.IndexOf(oldValue, comparison);
}

return str;
}

var fruitDictionary = new Dictionary<string, string>(StringComparer.InvariantCultureIgnoreCase) { { "Apple" , "Fruit" }, { "Orange", "Fruit" }, { "Spinach", "Greens" } };

TextRange textRange = new TextRange(richTextBox1.Document.ContentStart, richTextBox1.Document.ContentEnd);
string data = textRange.Text;

foreach (var kvp in fruitDictionary)
data = data.Replace(kvp.Key, kvp.Value, StringComparison.InvariantCultureIgnoreCase)

richTextBox2.AppendText(data);

关于c# - 如何为 var 输入制作不区分大小写的字典 - C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51115614/

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