2014-04-08 264 views
1

需要幫助在Java字符串的概念,一個字符串包含另一個字符串

String s1="Java is oop probgramming, R1|R2|R4|R5|R"; 
String s2="R"; 
String s3="R2"; 
String s4="R5"; 

我要比較S2,S3,S4與S1線比較後, 我已經試過休耕

System.out.println(s3.matches(s1.substring(Options1.indexOf(","), s1.indexOf("|")))); 
System.out.println(s2.matches(s1.substring(Options1.indexOf(","), s1.indexOf("|")))); 

我得到這兩個錯誤的陳述。

我想要當我比較s2字符串與s1它應該true

+2

根據「,」拆分它,然後在第二部分使用「contains」。 – Maroun

回答

0

也許你想是這樣的:

String s1="Java is oop programming, R1|R2|R4|R5|R"; 
String s2="R"; 
String s3="R2"; 
String s4="R5"; 
String[] validTargets = new String[]{s2,s3,s4}; 

String alternatives = s1.split(",")[1].trim(); 
for(String s: alternatives.split("|")){ 
    for(String t: validTargets){ 
     if(s.matches(t)) { //you can also use equals() here.. 
      System.out.println("they are matched!"); 
     } 
    } 
} 

它將,|分離子比較 - 與您的目標( s2,s3,s4在這種情況下),並檢查它們是否完全相同的字符串或不。

3

我認爲它可以簡單地用String#contains做 -

s1.contains(s2); 
s1.contains(s3); 
+1

不確定,但是如果字符串是''Java是oop probgramming,R1 | R2 | R4 | R5'我不認爲他想在'R'檢查時得到'true',但我可能錯了 – Christian

+0

我想OP想檢查某個特定位置是否存在特定的字符串 – Baby

+0

那麼它的工作正常 –

0

你馬y使用如下圖所示定期expressionas:

System.out.println(s1.matches("(?i).*"+s2+"*")); 
System.out.println(s1.matches("(?i).*"+s3+"*")); 
System.out.println(s1.matches("(?i).*"+s4+"*")); 

如果你想它,比較後比得到的字符串s1的串並比使用上面的代碼。

s1 = s1.substring(s1.indexOf(",")); 

這可以幫助你。

相關問題