我有一个像
这样的字符串Str s1 = abd,jh
Str2 = aa$$ab
我想读取只有a,b和$。
的字符串Str1 return false
Str2 return true.
我的代码
public static boolean containsOtherCharacter(String str) {
String[] st = str.split("");
for(int x = 0; x < st.length; x++)
if (st[x].compareTo("A") != 0 && st[x].compareTo("B") != 0 && st[x].compareTo("$") != 0)
return true;
return false;
}
任何帮助如何阅读。除此之外的任何其他值都应该被忽略。
答案 0 :(得分:4)
你试图在这里过度复杂化。你可以简单地使用正则表达式,比如
String s = "aa$$ab";
System.out.println(s.replaceAll("[ab$]", "").length()==0);
它会从a
中删除$
,b
和String
。之后,如果长度大于0,那么String必须有其他一些字符。注意它区分大小写。
答案 1 :(得分:0)
public static boolean hasSpecialChar( String input)
{
boolean found = true;
int len = input.length();
for(int i = 0; i< len ; i++)
{
if(input.charAt(i)== 97|| input.charAt(i)==98 ||input.charAt(i)==36)
{
// read the string
}
else
{
found = false;
return found;
// give out the error
}
}
return found ;
}
由于您只想读取a,b和$,因此我们可以使用字符的ASCII值,从而逐字符串地读取字符串并检查输入。由于a的ASCII值等于97,对于b为98,对于$为36,这对于这种情况可以正常工作。 希望对你有所帮助! @shanky singh
答案 2 :(得分:0)
以下是解决此问题的另一种方法:
public static boolean containsOtherCharacter(String str) {
boolean The_answer=false;
int count0 = StringUtils.countMatches(str, "a");
int count1 = StringUtils.countMatches(str, "b");
int count2 = StringUtils.countMatches(str, "$");
int ans=count0+count1+count2;
if(ans==str.length())The_anser=true;
return The_answer;
}