2015-07-28 67 views
4

我尝试使用contains方法来查找字符是否在字符串中? 我得到的错误:当发现一个字符是否在字符串中或发生错误时

方法包含在类字符串如果(str.contains(CH)) 需要不能被应用到给定的类型的 :CharSequence中 发现的:char

代码:

str1=rs.getString(1); 
int len=str1.length(); 
while(i<len) 
{ 
char ch=str1.charAt(i); 
if (str.contains(ch)) 
continue; 
else 
str=str+str1.charAt(i); 
i++; 
} 
+1

'String'被定义为使用接口CharSequence的对象。 'char'是一个原始的数据类型,不能使用接口CharSequence。这会导致你伤害'String#contains'方法签名。 – SomeJavaGuy

回答

3

if (str.indexOf(ch) != -1)应该工作。

String.contains只接受CharSequence,但一个字符不是CharSequence。上面的方法也适用于角色。另一种方式,其他人已经张贴(但我想解释多一点点),将通过创建一个字符串,使您的单个字符成的CharSequence,例如...

String x = "" + b; // implicit conversion 
String y = Character.valueOf(ch).toString(); // explicit conversion 
2

这是因为对于charString没有任何超载的方法。
使用String.contains()方法CharSequence像 -

String ch = "b"; 
str.contains(ch); 

她的CharSequenceinterface。 A CharSequence是一个可读的char值序列。该接口为许多不同类型的字符序列提供统一的只读访问。
在JDK处的所有已知的实施方式是:CharSequence是 - CharBuffer,SegmentString,StringBuffer,StringBuilder

0

以下为java.lang.String.contains()方法声明

public boolean contains(CharSequence s) 

所以,你必须把它传递给函数

Character ch = 'c'; 
str.contains(ch.toString());//converts ch to string and passes to the function 

str.contains(ch+"");//converts ch to string and passes to the function 

之前转换的字符字符串正确的代码

str1=rs.getString(1); 
    int len=str1.length(); 
    while(i<len) 
    { 
    char ch=str1.charAt(i); 
    if (str.contains(ch+""))//changed line 
    continue; 
    else 
    str=str+str1.charAt(i); 
    i++; 
    } 
+0

这在某种程度上是丑陋的。我宁愿ch.toString(),而不是那个隐式转换。 –

+0

@FlorianSchaetz主要o/p可能使用“char”而不是“Character”。 –

相关问题