2012-08-03 61 views
0

我需要查找包含在字符串中的字符。 除A-Z(lower and upper) or numbers or() or /, 之外的任何值都是允許的唯一字符。我需要在字符串中找到特殊字符並將它們顯示在C#中的標籤中

其他任何東西(特別是à,è,ë,Ç,ç,ï and so forth)對於在標籤中查找和顯示至關重要。

基本上我使用streamreader存儲了從文本文件到字符串的所有內容。 現在除[a-zA-z0-9]()/之外的每個字符都需要顯示在標籤中。

文本文件看起來像這樣:

0145 Joane 5521複方麻辛
0211 CHANE 2145馬刺
0124馬頓4512 btgames,

private void button1_Click(object sender, EventArgs e) 
    { 

     string BodyToCheck = richTextBox1.Text; 

     //This is where I need coding.... 
    } 




    private void Form1_Load(object sender, EventArgs e) 
    { 

     StreamReader reader = new StreamReader("C:/Users/Quinell.Struthers/Test.txt"); 

     string body = reader.ReadToEnd(); 
     reader.Close(); 
     reader.Dispose(); 

     richTextBox1.Text = body; 
    } 
+2

男士'n'女孩 - 我們可以停止投票結束和downvoting而不打擾向用戶解釋***爲什麼***。社區將會死亡。 http://blog.stackoverflow.com/2012/07/the-hunting-of-the-snark/?cb=1 – 2012-08-03 10:27:21

+0

@QllllStruthers - 第一:歡迎來到SO':D' - 我會試着解釋其他人在哪裏沒有。提出SO問題的最佳方式 - 尤其是這樣的問題 - 是告訴我們您目前在嘗試什麼,以及您遇到了哪些問題(特別有用的是簡短的代碼片段)。如果你還沒有嘗試過什麼,因爲你真的不知道如何解決問題;那麼你可以這麼說 - 但是除非你找到了一個潛在的解決方案,並且無法理解如何使用它,否則你很可能會得到'去學習'的答案(可能是關閉的)。 – 2012-08-03 10:31:54

+0

安德拉斯,我不會說這麼激烈。但imho這不是一個真正的社區要麼;-) – Joey 2012-08-03 10:32:44

回答

0

那麼,你可以使用正則表達式替換爲刪除允許的字符,然後顯示標籤中不允許的所有字符:

label1.Text = Regex.Replace(textBox1.Text, "(?i)[a-z0-9()/]", ""); 
+0

其他方式不是嗎? OP是否需要非法字符? – 2012-08-03 10:31:19

+0

是的,他們這樣做,對不起。 – Joey 2012-08-03 10:31:59

+0

嗯,我試過這個,但標籤返回空。我只需要顯示除我提到的第一組以外的所有字符。 – 2012-08-03 10:43:28

0
public static string GetSpecialCharacters(string str) { 
    StringBuilder sb = new StringBuilder(); 
    foreach (char c in str) { 
     if (!((c >= '0' && c <= '9') || (c >= 'A' && c <= 'Z') | || (c >= 'a' && c <= 'z') | c == '.' || c == '_')) { 
     sb.Append(c); 
     } 
    } 
    return sb.ToString(); 
} 
+0

如果它是一個擴展方法,你需要'string str'前面的關鍵字'this'。 – 2012-08-03 10:37:25

+0

是的,謝謝你提到Bob!我已更新它..不必是擴展方法! – Vinoth 2012-08-03 10:40:01

+0

也行不通 – 2012-08-03 10:48:36

0
using System.Text.RegularExpressions; 
using System.Linq; 
var regex=new Regex("[^A-Za-z0-9()/]"); 
var toDisplay=string.Join("",regex.Matches(testString).OfType<Match>().Select(x=>x.Value).ToArray()); 

編輯其實喬伊的回答使得它更簡單,使用替代,而不是抓住所有的值

using System.Text.RegularExpressions; 

var regex=new Regex("[A-Za-z0-9()/]"); 
var toDisplay=regex.Replace(testString,string.Empty); 

編輯:方法說明2

的使用需要先與其他用戶一樣,位於文件的頂部。

下一行創建一個正則表達式對象Regex on MSDN

這個正則表達式將匹配的範圍是從A-Z,任何字符a-z0-9和附加將匹配()/

最後,將變量toDisplay設置爲用空字符串替換所有這些匹配的結果(從結果中有效地刪除它們)。 testString是您希望過濾的源字符串。該代碼不會更改源字符串僅設置爲顯示爲過濾器的結果。

+0

我真的不明白。請你再解釋一下你在這裏使用的方法,請 – 2012-08-03 10:47:58

+0

@QuinellStruthers我已經更新了答案,這是否解釋得更好? – 2012-08-03 11:00:07

+0

是的,我更瞭解它,但標籤仍爲空 – 2012-08-03 11:07:25

相關問題