如何检查某些String是否包含特定的字符串,如“ABC72961”。所以我们搜索以“ABC”开头的字符串,后跟5位数字。我已经实现了一个算法,但我希望它与“匹配”或其他方式,然后检查这两个解决方案的速度。
答案 0 :(得分:1)
您可能希望将regex用于此
^ABC[0-9]{5}$
^
:字符串的开头ABC
:字面匹配ABC(区分大小写)[0-9]{5}
:匹配5到10的数字$
:字符串结尾使用String#matches
进行测试
String regex = "^ABC[0-9]{5}$";
String one = "ABC72961";
String two = "ABC2345";
String three = "AB12345";
String four = "ABABABAB";
System.out.println(one.matches(regex)); // true
System.out.println(two.matches(regex)); // false
System.out.println(three.matches(regex)); // false
System.out.println(four.matches(regex)); // false
查看您的评论,您希望它也适用于String one = "textABC72961text"
。为了实现这一点,您应该删除限制字符串的^
和$
。
.*ABC[0-9]{5}.*
如果你想提取它
if (s.matches(".*ABC[0-9]{5}.*")) {
Matcher m = Pattern.compile("ABC[0-9]{5}").matcher(s);
m.find();
result = m.group();
}
答案 1 :(得分:0)
您可以使用String indexOf命令,如下所示:
int result = someString.indexOf("ABC72961")
如果没有匹配,结果将为-1。
如果匹配,则结果将是匹配开始的索引。
答案 2 :(得分:0)
str.contains("ABC72961");
如果str
包含字符串,则返回true。如果没有,则为假。
答案 3 :(得分:0)
我认为你想要使用的是java.util.regex.Pattern
。
Pattern p = Pattern.compile("ABC(\d*)");
Matcher m = p.matcher("ABC72961");
boolean b = m.matches();
或者如果它在“ABC”之后正好是5位数,则可以使用正则表达式ABC(\d{5})
https://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html#compile(java.lang.String)
另一种解决方案是:
String stringToTest = "ABC72961"
boolean b = stringToTest.contains("ABC");
答案 4 :(得分:0)
var
EJECT_COM:array [0..5] of Word=($001B,$0000,$0002,$0000,$0000,$0000);
procedure EJECT_CD;
var
i:integer;
x:word;
begin
asm
mov dx,177h
@loop1:
in al,dx
and al,10000000b
jne @loop1
mov dx,177h
@loop2:
in al,dx
and al,01000000b
je @loop2
mov dx,176h
mov al,0A0h
out dx,al
mov dx,3F6h
mov al,00001010b
out dx,al
mov dx,177h
mov al,0a0h
out dx,al
mov cx,0FFFFh
@waitloop:
loopnz @waitloop
mov dx,177h
@loop3:
in al,dx
and al,10000000b
jne @loop3
mov dx,177h
@loop4:
in al,dx
and al,00001000b
je @loop4
end;
for i:=0 to 5 do begin
x:=EJECT_COM[i];
outw($170,x);
inb($376);
end;
inb($376);
asm
mov dx,177h
@loop5:
in al,dx
and al,10000000b
jne @loop5
end;
end;
答案 5 :(得分:0)
这是一个简单的代码,用于检查字符串中是否存在子字符串,而不使用库函数,正则表达式或其他复杂的数据结构。
class SSC {
public static void main(String[] args) {
String main_str <-- MAIN STRING
String sub_str <-- SUBSTRING
String w; int flag=0;
for(int i=0;i<=main_str.length()-sub_str.length();i++){
w="";
for(int j=0;j<sub_str.length();j++){
w+=main_str.charAt(i+j);
}
if(w.equals(sub_str))
flag++;
}
if(flag>0)
System.out.print("exists "+flag+" times");
else
System.out.print("doesn't exist");
}
}
希望这有帮助。