我想知道是否有更好的方法来编写这些多个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
非常感谢任何帮助。
答案 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