2012-05-30 46 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();