2012-07-31 33 views
-3

我有一個問題...一種基本的,但我想我可以採取一些幫助,從你們如何計算字符串中的分隔符?

我加密一個文件時,我對信息進行加密是

LoginTxtBox.Text + "/" + PwdTxtBox.Text + "/" + InstNameTextBox.Text + "/" + DBNameTxtBox.Text; 

當我解密。 ..我這樣做:

StringBuilder sClearText = new StringBuilder(); 
encryptor.Decrypt(sPrivateKeyFile, sDataFile, sClearText); 

//username/password 
string s = sClearText.ToString(); 
string[] split = s.Split(new Char[] { '/' }); 
if (split.Length == 4) 
{ 
    split0 = split[0]; 
    split1 = split[1]; 
    split2 = split[1]; 
    split3 = split[1]; 

現在,我得到的要求是,我需要在字符串的解密格式計數的分隔符,如果有2個以上的分隔符,然後它不是一個新的應用程序。如果只有一個分隔符,那麼它是一個從未使用過的應用程序。我不知道如何計算從解密字符串分隔符...幫我plzz

+2

你已經顯示的代碼隱含知道分隔符的數量,不是嗎? ('split.Length - 1');) – 2012-07-31 17:54:31

+3

注意:使用幾乎任何可打印的字符來分隔用戶輸入的字符串是個壞主意。請考慮正確的序列化以避免各種注入問題(即密碼「a/b」對您的系統來說會很棒)。 – 2012-07-31 18:00:28

+0

@丹是!尋找更多的方法來做到這一點 Regex.Matches(s,「/」).Count這個工作完美。感謝您的時間:) – user1410658 2012-07-31 18:11:36

回答

2

與此代碼

Regex.Matches(s, "/").Count 
+0

工作完美!謝謝哥們:) – user1410658 2012-07-31 18:13:31

+0

我很樂意幫助你user1410658 – 2012-07-31 18:14:16

2

嘗試一些更多方式:

int delimiters = input.Count(x => x == '/'); 

- 或 -

int delimiters = input.split('/').Length - 1; 
+1

是的......我也試過這些。謝謝你的時間:) – user1410658 2012-07-31 18:13:57

0

難道你不能在字符分隔符上分割字符串,並且結果數組應該包含一個超過t他的數量是多少?

+0

是的!我想到嘗試,但後來想到了知道這種做東西的差異化方式 Regex.Matches(s,「/」).Count)完美地工作。謝謝你的時間:) – user1410658 2012-07-31 18:15:18