[英]contains() method without prefix and suffix in Java
我被困在(我認為很簡單) String
驗證上。 我使用以下方法從EditText
獲取文本,該文本可以有 420 個字符並且必須包含一個特定的單詞(無論它在哪里):
if(edittext.getText().toString().toLowerCase().contains(stringToHave)) { }
// stringToHave = the specific String
但是,我想改善這種情況。 例如,你有這個:
String a = "This not a MetaStackOverflow question";
String b = "stackoverflow";
而你要知道,如果a
含有b
無論是大小寫敏感的,那么,你做如下:
if(a.toLowerCase().contains(b)) { }
這個條件是真的,因為a
確實包含StackOverflow
。 但是, a
不完全包含b
,有一個前綴為Meta
。 這不是完全相同的詞。我試圖在 SO 和其他 Java 網站上找到一種方法,但沒有結果。
如何改進contains()
方法以僅查找沒有前綴或后綴的確切String
? 我應該使用另一種方法嗎(如containsOnly()
,我已經嘗試過,但似乎未定義字符串,它是為了檢查它是否包含數字/字母/等字符) ?
編輯:
添加“兩個空格”驗證非常有吸引力和巧妙。 但是,如果特定文本位於句子的末尾並且我們添加了.
這行不通,不是嗎?
a = "This is great. This is on StackOverflow." // false because we have "."
在您尋求的模式之前和之后使用空間:
if(a.toLowerCase().contains(" " + b + " ")) { }
您可以在此處使用正則表達式。 Matcher
類有一個find()
方法,用於在字符串中搜索模式。 這將起作用:
Matcher matcher = Pattern.compile("(?i)\\b" + Pattern.quote(b) + "\\b").matcher(a);
if (matcher.find()) {
// contains
}
(?i)
是不區分大小寫的嵌入標志。 Pattern.quote()
用於轉義搜索字符串中的正則表達式元字符。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.