2011-05-31 92 views
1

我正在掃描文本框中的所有字符。然後程序會計算每個字符在文本框中的數量。下面是這增加的所有字符列表中的代碼:計算字符串中每個字符的出現次數,忽略CR

For each c as char in TxtBox 
    list.add(c) 
Next 

一切的工作很好,除了這也將添加返回到列表中,這是我不想要的。我想我可以這樣寫:

If c <> chr(10) Then 
    list.add(c) 
End If 

...但它不工作。有任何想法嗎?

+2

您還需要排除chr(13)。 10 =新行,13 =回車。 – Fosco 2011-05-31 19:29:28

+0

也許'Char.IsLetter(Char)'方法有助於如果你只想計算你可以做的字母var countsChars = TxtBox.Where(c => Char.IsLetter(c))。GroupBy(x => x);'它可以返回一個以char爲關鍵字的分組列表。 – Zebi 2011-05-31 19:36:55

回答

7

您還需要排除chr(13)。 10 =新行,13 =回車。

關於C爲char在TxtBox

if c <> chr(10) and c <> chr(13) then 
     list.add(c) 
    end if 

把那一個鏡頭。

4

在Windows中,插入LF = LineFeed = Chr(10)和CR =回車= Chr(13)作爲返回字符。

這來自(舊)點陣式打印機。

LINEFEED =下移一行
回車=移動到開始的當前行

它們都包含在Environment.NewLine財產。

所以,你的代碼應該是這樣的:

If Environment.NewLine.IndexOf(c) < 0 Then 
    list.Add(c) 
End If 

這樣,你肯定你的代碼也可以在使用不同字符換行符OS'es。

2

好,現在已經有很多答案,但我會做的事情是這樣的,如下所示:

For Each c As Char In TextBox1.Text.Replace(vbCrLf, "") 
    List.Add(c) 
Next 

我不知道你的「 List「變量,但是如果它是List類型的,或者是ListBox.ObjectCollection類型的,或者是其他許多類型的變量,那麼可以用下面的代碼替換這個循環:

List.AddRange(TextBox1.Text.Replace(vbCrLf, "").ToCharArray()) 

...只是爲了它的樂趣!

相關問題