.net 计算字符串中每个字符的出现次数,忽略CRs

.net 计算字符串中每个字符的出现次数,忽略CRs,.net,vb.net,.net,Vb.net,我正在扫描文本框中的所有字符。然后程序计算文本框中每个字符的数量。下面是将所有字符添加到列表中的代码: For each c as char in TxtBox list.add(c) Next 一切都很好,除了这也会在列表中添加返回,这是我不想要的。我想我可以这样写: If c <> chr(10) Then list.add(c) End If 如果c chr(10)那么 列表.添加(c) 如果结束 ……但它不起作用。有什么想法吗?在Windows中,LF=

我正在扫描文本框中的所有字符。然后程序计算文本框中每个字符的数量。下面是将所有字符添加到列表中的代码:

For each c as char in TxtBox
    list.add(c)
Next
一切都很好,除了这也会在列表中添加返回,这是我不想要的。我想我可以这样写:

If c <> chr(10) Then
    list.add(c)
End If
如果c chr(10)那么
列表.添加(c)
如果结束

……但它不起作用。有什么想法吗?

在Windows中,LF=LineFeed=Chr(10)和CR=carries Return=Chr(13)都作为返回字符插入

这来自(旧)点阵式打印机

LineFeed=向下移动一行
回车=移动到当前行的开头

它们都包含在
Environment.NewLine
属性中

因此,您的代码应该类似于:

 If Environment.NewLine.IndexOf(c) < 0 Then
    list.Add(c)
 End If
如果Environment.NewLine.IndexOf(c)<0那么
列表.添加(c)
如果结束

通过这种方式,您可以确保您的代码也适用于使用不同字符换行的操作系统。

在Windows中,LF=LineFeed=Chr(10)和CR=carries Return=Chr(13)都作为返回字符插入

这来自(旧)点阵式打印机

LineFeed=向下移动一行
回车=移动到当前行的开头

它们都包含在
Environment.NewLine
属性中

因此,您的代码应该类似于:

 If Environment.NewLine.IndexOf(c) < 0 Then
    list.Add(c)
 End If
如果Environment.NewLine.IndexOf(c)<0那么
列表.添加(c)
如果结束

通过这种方式,您可以确保您的代码也适用于使用不同字符换行的操作系统。

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

对于TxtBox中的每个c作为字符

   if c <> chr(10) and c <> chr(13) then
      list.add(c)
   end if
如果c chr(10)和c chr(13),则
列表.添加(c)
如果结束

试一试。

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

对于TxtBox中的每个c作为字符

   if c <> chr(10) and c <> chr(13) then
      list.add(c)
   end if
如果c chr(10)和c chr(13),则
列表.添加(c)
如果结束
试一试。

使用

使用


好吧,已经有很多答案了,但我的回答如下:

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())

…只是为了好玩

好吧,已经有很多答案了,但我的答案如下:

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())

…只是为了好玩

您还需要排除chr(13)。10=新行,13=回车。如果您只想计数字母,那么
Char.isleter(Char)
方法可能会有所帮助,您可以执行var countedChars=TxtBox.Where(c=>Char.isleter(c)).GroupBy(x=>x);`它将返回一个以char作为键的分组列表。您还需要排除chr(13)。10=新行,13=回车。如果您只想计数字母,那么
Char.isleter(Char)
方法可能会有所帮助,您可以执行var countedChars=TxtBox.Where(c=>Char.isleter(c)).GroupBy(x=>x);`它将返回一个以字符为键的分组列表。