2014-04-08 315 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(",")); 

这可以帮助你。

相关问题