多个if语句检查字符串和缩短的长度

时间:2017-07-28 08:00:23

标签: vb.net performance if-statement

我想知道是否有更好的方法来编写这些多个If语句?我确信有,我无法弄清楚它是什么。本质上,代码只是缩短了字符串。

                If text = "-----------------" Then
                    text = "-"
                End If
                If text = "----------------" Then
                    text = "-"
                End If
                If text = "---------------" Then
                    text = "-"
                End If
                If text = "--------------" Then
                    text = "-"
                End If
                If text = "-------------" Then
                    text = "-"
                End If
                If text = "------------" Then
                    text = "-"
                End If
                If text = "-----------" Then
                    text = "-"
                End If
                If text = "----------" Then
                    text = "-"
                End If
                If text = "---------" Then
                    text = "-"
                End If
                If text = "--------" Then
                    text = "-"
                End If
                If text = "-------" Then
                    text = "-"
                End If
                If text = "------" Then
                    text = "-"
                End If
                If text = "-----" Then
                    text = "-"
                End If
                If text = "----" Then
                    text = "-"
                End If
                If text = "---" Then
                    text = "-"
                End If
                If text = "--" Then
                    text = "-"
                End If

非常感谢任何帮助。

3 个答案:

答案 0 :(得分:5)

您可以使用LINQ:

If text.Length > 0 AndAlso text.All(Function(c) c = "-"c) Then text = "-"

请求的解释(我发现这实际上是可以理解的):

由于字符串实现IEnumerable(Of Char),您可以像使用字符集一样使用它。 LINQ扩展方法Enumerable.All确定序列/集合中的所有项是否与给定的predicate匹配(返回True)。在这种情况下,谓词检查给定的char是否为"-"c(最后的c是必需的,option strict on告诉编译器这是一个char而不是字符串)。因此,只有当字符串中的所有字符都是minus时,此方法才会返回True。只要All找到不同的字符,它就会返回False

如果它返回True,则有1-n个缺点而没有其他字符,因此变量text可以是"-"

答案 1 :(得分:0)

怎么样?:

Dim maxLengthOfStringYouCompareTo As Integer = 17

Dim xxx As String = ""

Dim text As String = If((xxx.All(Function(charrr) charrr.ToString() = "-") OrElse xxx.Length <= maxLengthOfStringYouCompareTo), "-", "otherValue")

,但如果不需要限制,请删除

xxx.Length <= maxLengthOfStringYouCompareTo

答案 2 :(得分:0)

While text.Contains("--")
    text = text.Replace("--","-")
End While