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);
}

但是应该按照我想要的方式更换的新弦乐手不会更换。问题出在哪里?

C# 使用数组替换

目前,您每次都会丢弃"替换"字符串。您可能需要以下内容:

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创建从abc714741147的字符串

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();