【发布时间】:2013-08-01 01:46:33
【问题描述】:
我有 54,000 个文件,每个文件的命名方法略有不同,我需要检查文件名是否包含特定字符串。但是,我找不到让 Select 语句正常工作的方法。
我的代码意外失败。请谁能告诉我为什么在“BARITONE”中找不到字符串“BAR”?
Dim tempCheck as string = "1st BARITONE"
Dim GoodOne as Boolean = False
Select Case tempCheck
Case tempCheck.Contains("CORN")
GoodOne = True
Case tempCheck.Contains("HORN")
GoodOne = True
Case tempCheck.Contains("BAR")
GoodOne = True
Case tempCheck.Contains("TROM")
GoodOne = True
Case tempCheck.Contains("EUP")
GoodOne = True
Case Else
GoodOne = False
End Select
【问题讨论】:
-
请不要那样做!定义可接受字符串的通用列表,然后循环遍历它,一旦找到匹配值,将标志设置为 true 并退出循环。这样,如果添加了值,您就不需要添加代码行。如果值不是硬编码而是在一些配置文件中,那就更好了!
-
@Bartdude 使用 Linq 更容易:
things.Any(i => stuff.Contains(i))(C#,但仍然如此)。 -
@GrantThomas :不幸的是,我无法在我当前的任何项目中使用 Linq,但每次我看到这些行之一时,我都更渴望尝试它。似乎绝对可以节省很多时间!
标签: vb.net string select-case