[英]String.contains always appears false
public final void nameErrorLoop () {
while (error) {
System.out.println("Enter the employee's name.");
setName(kb.next());
if (name.contains("[A-Za-z]")) {
error = false;
}
else {
System.out.println("The name can only contain letters.");
}
}
error = true;
}
盡管使用不同的方法進行了類似的設置,但由於if語句始終為false,因此該方法陷入了恆定循環。 我已經嘗試過.matches()
,到目前為止,我在Interent上沒有發現任何幫助。 有什么想法嗎? 感謝您的幫助。
編輯:我剛剛在完成項目時注意到,以后嘗試打印“名稱”只會顯示名字,而從不打印名字。 有什么辦法可以讓'name'字符串包含兩者嗎?
String.contains
不使用正則表達式-只是以“ foobar”包含“ oob”的方式檢查一個字符串是否包含另一個字符串。
聽起來您想檢查name
只包含字母,在這種情況下,您應該檢查以下內容:
if (name.matches("^[A-Za-z]+$"))
+
(而不是*
)將檢查它是否為非空; ^
和$
將檢查是否只有字母。
但是,如果您希望它是一個全名,則最好允許使用空格,連字符和撇號:
if (name.matches("^[-' A-Za-z]+$"))
還應考慮帶重音符號-和其他語言的標點符號。
簡單。 .contains()不是您的想法。 它執行精確的字符串匹配。
"anything".contains("something that's not a regular expression");
要么使用這個
Pattern p2=Pattern.compile("[A-Za-z]+");//call only once
p2.matcher(txt).find();//call in loop
或這個:
for(char ch: "something".toCharArray()){
if(Character.isAlphabetic(ch)){
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.