在Java中有一种方法来检查条件:
"这个单个字符是否出现在字符串x中"
没有使用循环?
你可以用string.indexOf('a')
.
如果
'a'
存在string
,则返回索引(> = 0).如果不是,则返回-1.因此,非负返回值意味着'a' is present in the string
.
String.contains()
检查字符串是否包含指定的char值序列
String.indexOf()
返回指定字符或子字符串的第一个出现的字符串中的索引(此方法有4种变体)
我不确定原始海报究竟是在问什么.由于indexOf(...)和contains(...)两者都可能在内部使用循环,或许他正在寻找是否有可能没有循环?我可以想到两种方法,一种方法当然是复发:
public boolean containsChar(String s, char search) { if (s.length() == 0) return false; else return s.charAt(0) == search || containsChar(s.substring(1), search); }
另一个不那么优雅,但完整性......:
/** * Works for strings of up to 5 characters */ public boolean containsChar(String s, char search) { if (s.length() > 5) throw IllegalArgumentException(); try { if (s.charAt(0) == search) return true; if (s.charAt(1) == search) return true; if (s.charAt(2) == search) return true; if (s.charAt(3) == search) return true; if (s.charAt(4) == search) return true; } catch (IndexOutOfBoundsException e) { // this should never happen... return false; } return false; }
当你需要支持更长和更长的字符串时,行数增加.但根本没有循环/重复.如果您担心该length()使用循环,您甚至可以删除长度检查.
String temp = "abcdefghi"; if(temp.indexOf("b")!=-1) { System.out.println("there is 'b' in temp string"); } else { System.out.println("there is no 'b' in temp string"); }
您可以使用String
该类中的2种方法。
String.contains()
检查字符串是否包含指定的char值序列
String.indexOf()
它返回指定字符或子字符串首次出现的字符串中的索引,如果找不到该字符,则返回-1(此方法有4种变化)
方法1:
String myString = "foobar"; if (myString.contains("x") { // Do something. }
方法2:
String myString = "foobar"; if (myString.indexOf("x") >= 0 { // Do something. }
链接作者:Zach Scrivena