0

我有两个字符串数组,它们是:

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中获取一些 rondom 文本。maskedTextBox: tekstas = maskedTextBox1.Text

现在我需要将abecele[]IN THAT TEXT 数组中的字符更改为 keitiniai 数组值,就像我们在 tekstas 字符串中有这样的文本“abc”一样,它将变为714741147.

我使用这样的代码来实现:

for (i = 0; i < 32; i++)
{
    string raide = abecele[i];
    string keitinys = keitiniai[i];
    string pakeistas = tekstas.Replace(raide, keitinys);
}

但是应该根据我的需要替换的新字符串 pakeistas 不会被替换。哪里有问题?

4

4 回答 4

4

目前,您每次都丢弃“replacements made”字符串。您可能需要以下内容:

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.
于 2012-05-30T08:42:39.070 回答
4

我会使用 aDictionary<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();
于 2012-05-30T08:51:48.127 回答
2

您修改后的新字符串 pakeistas 会一遍又一遍地被覆盖,并且仅在 for 循环期间存在。

于 2012-05-30T08:42:52.147 回答
1

而不是拥有这两个数组,您可以使用带有字母和值作为整数值的字典,然后您可以使用 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();
于 2012-05-30T08:53:16.057 回答