2012-05-30 14 views
0

我有两个字符串数组分别是:C#更换使用数组

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文本;

现在我需要那些在abecele[]数组中的字符,那么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。哪里有问题?

+2

如果你尝试加密密码,使用SHA-1散列算法(如果你只需要比较的话)或AES加密(如果你需要解密的密码)。这更安全。 –

回答

4

此刻你放弃每一次串“作了替换”。你可能想以下几点:

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. 
+0

谢谢,现在感觉非常愚蠢:) – Tautvydas

2

你的新的修改后的字符串,pakeistas,得到仅在for循环重写一遍又一遍,并存在。

4

我会用一个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(); 
1

而不是有这两个数组,你可以有字典与关键的字母和值作为你的整数值,然后你可以使用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();