【问题标题】:how to find the number sentences in a string如何找到字符串中的数字句子
【发布时间】:2011-02-09 03:54:37
【问题描述】:

如何在字符串数据中找到句子的数量?

编辑:好的,我在遵循 Wipqozn 的方法后想出了这个

Dim str As String = "This . is .  a . text."
Dim maxCount As Integer = str.Count
Dim intSent As Integer = 1
Dim singleChar As Char

For i = 1 To maxCount
    singleChar = str.Chars(i)          ' Getting an error here
    If singleChar = "." Then
        intSent = intSent + 1
    End If
Next

MsgBox("Number of sentence = " & intSent)

【问题讨论】:

  • 你有没有尝试过这个,或者你只是去SO寻找答案?
  • 如果是作业,请标记为作业。在你寻求帮助之前展示你所做的工作会发生什么?
  • 如果我能自己做,我就不会在这里问了。在过去的 1. 20 小时内,我正在尝试这样做。
  • @Kirk:这几乎概括了他在 SO 上提出的所有问题
  • @Kirk, Matt 那是因为我不知道从哪里开始

标签: vb.net


【解决方案1】:

编辑 2:将 Dim maxCount 设置为 Integer = str.Count-1。使用与下面提到的相同符号,因为数组从 0 开始,所以它在 str.Count-1 结束。所以你要检查的最后一个元素是 str.Count-1,而不是 str.Count。

编辑:我相信你在 singleChar = str.Chars(i) 的错误是因为你设置了 i=1。除非我弄错了,否则数组在 BASIC 中初始化为“0”(这就是一个字符串)。所以第一个字符实际上是在 str.Chars(0) 而不是 str.Char(1)。此外,当您遇到错误时,您应该在问题中发布错误。让我们更容易理解并帮助您解决问题 =)

Here. 这就是检查字符串每个字符的方式。您需要使用循环遍历并检查字符串的每个元素,将其与一些预定义的值(由您预定义)进行比较,这些值指示句子的开头(或结尾)。

【讨论】:

  • 你应该使用i = 0 to maxCount - 1
  • Dim maxCount As Integer = str.Count-1 不会更快吗?实际上,最好的方法可能是只使用 str.Count-1,根本不用考虑 maxCount。
【解决方案2】:

解析字符串数据,使用您决定终止“句子”的任何内容作为分隔符(可能是多个字符,例如句点或感叹号),然后计算返回数组中的段数。

编辑: 通过以下link 了解如何在 VB.net 中使用正则表达式:

然后使用这个正则表达式:

@"(\S.+?[.!?])(?=\s+|$)"

在 C# 中演示,here

【讨论】:

  • 或者只是数数,对吗?如果您不打算将它用于任何事情,则似乎没有必要实际创建一个数组。
  • 我提到了拆分器,如果我没记错的话,vb.net中的拆分方法不会自动返回一个数组吗?
【解决方案3】:

如果您所做的只是计算经期,您可以使用

str.Split(New Char() {"."c}).Length -1

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-09-14
    • 2014-02-05
    • 2018-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-11
    • 1970-01-01
    相关资源
    最近更新 更多