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'之前,基本上只要符号中的第二个字母不在第一个字母之前。 –