0
我收到2個字符串作爲輸入。第一個是名字,第二個是符號。該符號必須是2個字符。爲使符號有效,其字母必須按順序出現在名稱中。 例如 名稱:「記事本」和 符號:'Nt'或'Te'將有效,但'Et'或'Da'無效。檢查某些字符的字符串
我收到2個字符串作爲輸入。第一個是名字,第二個是符號。該符號必須是2個字符。爲使符號有效,其字母必須按順序出現在名稱中。 例如 名稱:「記事本」和 符號:'Nt'或'Te'將有效,但'Et'或'Da'無效。檢查某些字符的字符串
你可以建立自己的正則表達式來檢查symbole正確與否,例如:
String str = "Notepad";
String symbole = "tN";
String regex = "(?i).*";
for(int i = 0; i<symbole.length(); i++){
regex+=symbole.charAt(i)+".*";
}
System.out.println(str.matches(regex));
例如,對於輸出:
Symbole Regex Result
tN (?i).*t.*N.* false
Nt (?i).*N.*t.* true
Nd (?i).*N.*d.* true
NeD (?i).*N.*e.*D.* true
(?i)
不區分大小寫?
的邏輯是 -
找到字符串 「的符號的第一個字符」
如果找到,然後,找到「該系統的第二字符「在第一個索引後面的字符串中開始
-
public boolean isValid(String str1, String str2){
String t1, t2;
t1 = str1.toLowerCase();
t2 = str2.toLowerCase();
if(t1.indexOf(t2.charAt(0)) > -1)
if(t1.indexOf(t2.charAt(1), t1.indexOf(t2.charAt(0))) > -1)
return true;
return false;
}
因此,符號不一定是2個字符,按照正確的順序緊隨其後?或爲什麼Nt有效?如果nt將是無效的並且只有像No,Ot,Te等是有效的,則可以使用string.contains()方法 – XtremeBaumer
@XtremeBaumer'Nt'是有效的,因爲'N'在'T'之前,基本上只要符號中的第二個字母不在第一個字母之前。 –