【问题标题】:Limit each line in text file to X amount of words将文本文件中的每一行限制为 X 字数
【发布时间】:2014-03-13 07:44:31
【问题描述】:

您好,我正在尝试使用 VB.NET 制作一个程序,该程序可以打开一个文本文件,将每行的第一个字母大写,将每行限制为 7 个单词或更少,然后将每行放入到一个列表框中。例如,它将采用如下文本字符串:

  • w1 w2 w3 w4 w5 w6 w7 w8 w9 w10 w11 w12 w13 w14

然后把它变成两个单独的行,像这样:

  • W1 w2 w3 w4 w5 w6 w7
  • W8 w9 w10 w11 w12 w13 w14

这是我现在读取每一行并将行的第一个字母大写到列表框中的代码

Try
        Dim reader As New System.IO.StreamReader(filePath)

        Dim textLine As String = ""

        Do While reader.Peek <> -1

            textLine = reader.ReadLine

            textLine = textLine.Substring(0, 1).ToUpper + textLine.Substring(1)

            MAIN_FORM.previewBox.Items.Add(textLine)

        Loop

        reader.Close()

    Catch ex As Exception
        MsgBox(ex.Message)
    End Try

现在我只需要弄清楚如何将每一行分成 7 个或更少的单词。

对此的任何帮助将不胜感激。

【问题讨论】:

    标签: vb.net text line limit words


    【解决方案1】:

    一点 Linq 会有很大帮助....

    Dim count As Integer = 7
    Dim pos As Integer = 0
    Do While reader.Peek <> -1
    
        textLine = reader.ReadLine
    
        ' Split the line to the individual words
        Dim parts = textLine.Split(" "c)
        do
            ' Skip the previous words and take the count required
            Dim block = parts.Skip(pos).Take(count).ToArray()
    
            ' position to read the next count words
            pos = pos + count
    
            if block.Count > 0 Then
                block(0) = CultureInfo.InvariantCulture.TextInfo.ToTitleCase(block(0))
            end if
            MAIN_FORM.previewBox.Items.Add(string.Join(" ", block))
       Loop While(pos < parts.Length)
    Loop
    

    编辑:不确定是否测试了所有边缘情况,但这应该适用于任何长度

    【讨论】:

    • 差不多了,但它似乎不能满足输入行上有 15 个以上单词的可能性。可能只需要一个内部循环继续分解last,直到什么都没有。
    • 我很好奇 "Dim parts = textLine.Split(" "c) 行中的 c 是什么意思?这是错字还是应该存在出于某种原因?
    • 指示 Split 函数使用采用单个字符的重载
    • String.Split 需要一个由字符串或字符组成的 ParamArray 作为其第一个参数。强制 " "c 表示您要传递单个字符。因为拆分接收一个 ParamArray,我可以避免显式构建一个 char 数组来传递单个 char(请参阅String.Split 的 VB.NET 部分中的示例
    • 感谢您的解释。我很感激你给了我有效的代码,我只是想尝试并理解它为什么有效。
    猜你喜欢
    • 2013-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多