假设定义了一个字符串:

String list = "apples,orange,bears,1,100,20,apple";

如果不将列表分隔成集合或数组,是否有更好的方法在列表中查找字符串?例如,如果我搜索"bear",应该没有结果,因为不会有完全匹配(bears不算数)。不能查找“,bear,",因为不能保证bear一词不会出现在文件的开头或结尾。

最佳答案

你仍然可以使用类似于:

(^|,)bears(,|$)

它将寻找逗号,或开始或结束的行,我相信这是你正在寻找的。
编辑:附录
由于denomales提到了它,上面的regex搜索将使用它能找到的任何逗号(如果有的话),这样在apples,orange,bears,honey,bears,bears,bears,bears,9999,bees这样的列表中,您将得到重叠的匹配,并且在5个当前的列表中只计算3个熊。在这种情况下,您可以使用lookarounds。你可能需要花点时间去了解他们,但要点是他们会在不消耗他们的情况下看后面或前面的角色。这样就可以找到所有的5只熊,这就是你使用它们的方式:
(?<=^|,)bears(?=,|$)

人物分类…
^表示一行的开始,这样在没有逗号的情况下,您仍然可以得到一个匹配项。
,是文本逗号。
(?<= ... )是一个正面的注视点,它将注视b中的bears字符后面,以确保里面有什么,即a^或a,
(?= ... )是一个积极的展望,它将关注s中的bears字符,以确保里面有什么,即a,或a$
$表示一行的结尾,工作方式非常类似于^,但在结尾。

关于java - 在逗号分隔的字符串中查找值的更好方法(Java/Android),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17774328/

10-10 23:20