【问题标题】:How do I find the longest word in a Visual Basic array?如何在 Visual Basic 数组中找到最长的单词?
【发布时间】:2013-11-20 16:18:46
【问题描述】:

我在 Visual Basic 中有一个数组,它需要返回最长的单词。如何在字符串数组中查找最长的单词?非常感谢任何帮助!

【问题讨论】:

    标签: arrays vb.net word


    【解决方案1】:

    一个 LINQ 替代方案是这样的:

    Dim strings = New String() {"1", "02", "003", "0004", "00005"}
    
    Dim longest As String = strings.OrderByDescending(Function(s) s.Length).FirstOrDefault()
    

    【讨论】:

    • 我建议做一个FirstOrDefault,否则如果字符串为空它会崩溃。
    • @Scottie - 如果字符串为空,长度不会为 0 吗?
    • @KarlAnderson - 你所拥有的会很好用。空字符串将简单地排序为 0 长度。测试它,你会看到。您需要FirstOrDefault() 的唯一原因是null 字符串。
    • @Scott - 抱歉,我打错了,OrDefault 帐户为空,感谢您发现我的错字。我无法编辑评论,因为它发布时间太早了。
    • @Scott - 我的意思是如果您的字符串数组为空,它将在 First 上崩溃。我习惯使用 FirstOrDefault。
    【解决方案2】:
    Dim longestWord = String.Empty
    
    For Each word in strArray
        If Not String.IsNullOrEmpty(word) AndAlso word.Length > longestWord.Length Then
            longestWord = word
        End If        
    Next
    

    ** 更新为空字符串 **

    【讨论】:

      【解决方案3】:

      类似这样的东西...(它是 c#,但应该很容易移植到 VB)

      string[] stringArray = new string[] { "One", "Two", "Three", "Four" };
      string longest = stringArray.OrderByDescending(x => x.Length).FirstOrDefault();
      

      【讨论】:

        【解决方案4】:

        如果我要在 C# 中使用 Linq 执行此操作,我会这样做:

        var strings = new string[3] { "abc", "defg", "hijkl" };
        string longest = strings.OrderByDescending(s => s.Length).FirstOrDefault();
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2022-12-01
          • 1970-01-01
          • 2018-12-13
          • 1970-01-01
          • 1970-01-01
          • 2012-02-25
          • 1970-01-01
          相关资源
          最近更新 更多