我想查找utility是否在utilities之一中。

我有一个JUnit测试如下

@Test
public void testUtilityInUtilities() {
    final String utilities = "Pacific Gas & Electric (PG&E),San Diego Gas & Electric (SDG&E), Salt River Project (SRP),Southern California Edison (SCE)";
    final String utility = "San Diego Gas & Electric (SDG&E)";
    assertTrue(utilities.contains(utility));
}


这是一个足够好的测试吗?还是我应该做以下类似的事情?

String[] splitString = (utilities.split(","));
for (String string : splitString) {
    if (string.equals(utility)) {return true;}
}
return false;


推荐哪种方法?拆分或包含还是其他?

最佳答案

contains方法更快,但是容易出现误报:即使实际字符串是"Gas & Electric",它也会匹配一个子字符串,例如"Pacific Gas & Electric (PG&E)"。您可以通过要求匹配项周围的点位于字符串的末尾或逗号来预防这种情况。您还可以通过用正则表达式括起来的搜索字符串构造一个正则表达式来改进第一种方法,该搜索字符串以结束标记(即逗号,$^)为框架,也需要完全匹配。

split方法更可靠,但是很浪费:您最终创建了一个完整的子字符串数组,仅检查单个字符串是否存在,而丢弃其余的字符串。

总而言之,在性能很重要的情况下,我会首选第一种方法,因为它不会浪费。但是,如果偶尔运行此方法,则基于split的方法更易于编码和读取。

关于java - 在逗号分隔的字符串中查找单词的推荐方法?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23068221/

10-12 00:32
查看更多