使用哪个更好:regex.containsMatchIn(String)或String.contains(regex),为什么?

时间:2019-05-28 12:34:20

标签: regex kotlin

如果我有一个名为“ text”的字符串和一个正则表达式(为方便起见,称为“ regex”),我想对它进行检查,我应该使用:

regex.containsMatchIn(text)

或者我应该使用:

text.contains(regex)

两者似乎都成功了,但是我不确定与此有关的最佳实践。

2 个答案:

答案 0 :(得分:2)

使用任何一种使您的代码更易于阅读。它们之间没有区别,因为text.contains(regex)调用Strings.kt source coderegex.containsMatchIn(text)

@kotlin.internal.InlineOnly
public inline operator fun CharSequence.contains(regex: Regex): Boolean = regex.containsMatchIn(this)

答案 1 :(得分:0)

Kotlin文档说:

包含

  

如果此char序列包含指定的其他字符序列作为子字符串,则返回true。

包含匹配项

  

指示正则表达式是否可以在指定的输入中找到至少一个匹配项。

看起来两者都差不多做同一件事,因此从功能上来说,使用哪个都没关系。

但是,由于您正在使用正则表达式,因此我觉得使用containsMatchIn更合适,因为它是正则表达式库的一部分,专门用于此目的。

contains不仅可以用于正则表达式,例如用于查找“流”是否为“溢出”的子字符串。因此,如果我们很挑剔的话,将其用于正则表达式可能不太合适。