2017-05-05 178 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; 
}