gpt4 book ai didi

arrays - 检查字符串数组是否包含不带循环的非空字符串

转载 作者:行者123 更新时间:2023-12-03 00:30:14 26 4
gpt4 key购买 nike

我有一个 If 语句来检查许多事情(BaySlots() 是一个字符串数组)。

If (Not BaySlots.Contains(Not String.Empty)) OrElse
(Not BayAcId = 0 AndAlso Not BayAcId = acProgramId _
AndAlso overrideSetting = False) Then

我虽然第一个条件的 Array.Contains 方法足以告诉我数组是否只包含空字符串,但它给出了 InvalidCastException: Conversion from string ""to type Long 无效,所以我猜测 Not String.Empty 实际上被评估为试图转换为 Long 的东西。

有没有更好的方法可以用来改进这个 If,这样我仍然可以只对数组中的空字符串进行测试,作为 If 的一部分,而不必添加前面的循环来测试BaySlots() 的每个索引是否为空字符串?

我认为除了循环之外还应该有某种方法来测试它,因为仅仅为了测试是否没有内容就需要做大量的工作。

谢谢

PS 只是为了澄清这一点,并不是要测试数组是否具有零维度或等于 Nothing,而是要测试它包含的字符串是否全部等于 String.Empty。

最佳答案

LINQ 的 Enumerable.Any可以做到这一点。 Not Contains(Not String.Empty)) 的直接翻译是:



If (Not BaySlots.Any(Function(x) x <> "")) OrElse ...

(如果您愿意,可以将 "" 替换为 String.Empty。)

<小时/>

由于这里有双重否定,我建议将其替换为 Enumerable.All为了便于阅读:

If BaySlots.All(Function(x) x = "") OrElse ...

这也可以更清楚地传达您的意图(“如果所有条目都是空的......”)。

<小时/>

注意:在 VB.NET 中,如果字符串是 ""String.Empty 进行比较也会得到 True >什么都没有

关于arrays - 检查字符串数组是否包含不带循环的非空字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18718342/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com