2017-05-05 225 views
0

我收到2個字符串作爲輸入。第一個是名字,第二個是符號。該符號必須是2個字符。爲使符號有效,其字母必須按順序出現在名稱中。 例如 名稱:「記事本」和 符號:'Nt'或'Te'將有效,但'Et'或'Da'無效。檢查某些字符的字符串

+0

因此,符號不一定是2個字符,按照正確的順序緊隨其後?或爲什麼Nt有效?如果nt將是無效的並且只有像No,Ot,Te等是有效的,則可以使用string.contains()方法 – XtremeBaumer

+0

@XtremeBaumer'Nt'是有效的,因爲'N'在'T'之前,基本上只要符號中的第二個字母不在第一個字母之前。 –

回答

2

你可以建立自己的正則表達式來檢查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)不區分大小寫?

Ideone demo

0

的邏輯是 -

  • 找到字符串 「的符號的第一個字符」

  • 如果找到,然後,找到「該系統的第二字符「在第一個索引後面的字符串中開始

-

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; 
}