C# 使用数组替换
本文关键字:替换 数组 | 更新日期: 2023-09-27 18:35:48
我有两个字符串数组,它们是:
string[] abecele = { "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "w", "x", "y", "z", ".", ",", "!", "?", "(", ")", "@", " " };
string[] keitiniai = { "714", "741", "147", "471", "417", "174", "789", "798", "897", "978", "879", "987", "123", "321", "132", "312", "213", "231", "852", "258", "825", "285", "582", "528", "951", "159", "915", "195", "519", "591", "753", "357", "000" };
然后我有一个名为 tekstas
的字符串,它从 maskedTextBox:
tekstas = maskedTextBox1.Text
中获取一些 rondom 文本;
现在我需要将该文本中数组中的字符更改为 keitiniai 数组值abecele[]
就像我们在 tekstas 字符串中有这样的文本"abc"一样,它会变成714741147
。
我使用这样的代码来实现:
for (i = 0; i < 32; i++)
{
string raide = abecele[i];
string keitinys = keitiniai[i];
string pakeistas = tekstas.Replace(raide, keitinys);
}
但是应该按照我想要的方式更换的新弦乐手不会更换。问题出在哪里?
目前,您每次都会丢弃"替换"字符串。您可能需要以下内容:
string pakeistas = tekstas;
for (i = 0; i < 32; i++)
{
string raide = abecele[i];
string keitinys = keitiniai[i];
pakeistas = pakeistas.Replace(raide, keitinys);
}
// Use pakeistas for whatever.
我会改用Dictionary<Char, String>
:
IDictionary<char, string> lookup = new Dictionary<char, string> {
{'a', "714"},
{'b', "741"},
{'c', "147"},
//...
};
StringBuilder resultBuilder = new StringBuilder();
foreach(char c in tekstas) {
string code;
if(lookup.TryGetValue(c, out code))
resultBuilder.Append(code);
}
string result = resultBuilder.ToString();
你新修改的字符串 pakeistas 会被一遍又一遍地覆盖,并且只存在于 for 循环期间。
而不是这两个数组,你可以让字典与键字母和值作为你的整数值,然后你可以使用StringBuilder创建从abc
到714741147
的字符串
Dictionary<string, string> myDictionary = new Dictionary<string, string>();
myDictionary.Add("a", "714");
myDictionary.Add("b", "741");
myDictionary.Add("c", "147");
//and so on ...
string tekstas = "abc";
StringBuilder sb = new StringBuilder();
foreach(char c in tekstas)
{
string key = c.ToString();
sb.Append(myDictionary[key]);
}
var pakeistas = sb.ToString();