检查字符串中的辅音
Check a string for consonants
我想编写一个方法来使用 .contains
或 .indexOf
检查 string
是否存在 辅音 。
我想我可以做很长的路要走,检查字母表中的每个 辅音,但我知道有更好的方法。这是我到目前为止所拥有的,但就像我说的那样,我认为这是很长的路要走。
public boolean containsConsonant(String searchString) {
if(searchString.contains("b") || searchString.contains("c")){
return true;
}
我认为这里一个简单的 for
循环是最可读的,您可以使用布尔与测试字符是否在所需范围内。您可以使用 or 测试来跳过元音。像,
public boolean containsConsonant(String searchString) {
if (searchString == null) {
return false;
}
for (char ch : searchString.toCharArray()) {
char lower = Character.toLowerCase(ch);
if (lower >= 'a' && lower <= 'z') {
if (lower == 'a' || lower == 'e' || lower == 'i' ||
lower == 'o' || lower == 'u') continue;
return true;
}
}
return false;
}
优化
然后您可以优化上面的内容(并且直接您的问题)通过在提取的常量上使用contains
String
个 vowels
。像,
private static final String vowels = "aeiou";
public static boolean containsConsonant(final String searchString) {
if (searchString == null) {
return false;
}
for (char ch : searchString.toCharArray()) {
char lower = Character.toLowerCase(ch);
if (lower >= 'a' && lower <= 'z' && !vowels.contains(String.valueOf(lower))) {
return true;
}
}
return false;
}
你可以创建一个包含所有辅音的数组,然后 运行 使用循环创建它
例如
String[] consonants{"b", "c",....}
boolean containsConsonants(String searchString, String[]arr){
for (String consonant: arr){
if(searchString.contains(str)){ return true} return False
我看到您明确要求使用 contains
或 indexOf
以防万一 - 如果您可以使用 matches
- 实施起来会非常容易。
public boolean containsConsonant(String searchString){
String consonants = ".*[bcdfghj].*"; //list the characters to be checked
return searchString.matches(consonants);
}
我想编写一个方法来使用 .contains
或 .indexOf
检查 string
是否存在 辅音 。
我想我可以做很长的路要走,检查字母表中的每个 辅音,但我知道有更好的方法。这是我到目前为止所拥有的,但就像我说的那样,我认为这是很长的路要走。
public boolean containsConsonant(String searchString) {
if(searchString.contains("b") || searchString.contains("c")){
return true;
}
我认为这里一个简单的 for
循环是最可读的,您可以使用布尔与测试字符是否在所需范围内。您可以使用 or 测试来跳过元音。像,
public boolean containsConsonant(String searchString) {
if (searchString == null) {
return false;
}
for (char ch : searchString.toCharArray()) {
char lower = Character.toLowerCase(ch);
if (lower >= 'a' && lower <= 'z') {
if (lower == 'a' || lower == 'e' || lower == 'i' ||
lower == 'o' || lower == 'u') continue;
return true;
}
}
return false;
}
优化
然后您可以优化上面的内容(并且直接您的问题)通过在提取的常量上使用contains
String
个 vowels
。像,
private static final String vowels = "aeiou";
public static boolean containsConsonant(final String searchString) {
if (searchString == null) {
return false;
}
for (char ch : searchString.toCharArray()) {
char lower = Character.toLowerCase(ch);
if (lower >= 'a' && lower <= 'z' && !vowels.contains(String.valueOf(lower))) {
return true;
}
}
return false;
}
你可以创建一个包含所有辅音的数组,然后 运行 使用循环创建它 例如
String[] consonants{"b", "c",....}
boolean containsConsonants(String searchString, String[]arr){
for (String consonant: arr){
if(searchString.contains(str)){ return true} return False
我看到您明确要求使用 contains
或 indexOf
以防万一 - 如果您可以使用 matches
- 实施起来会非常容易。
public boolean containsConsonant(String searchString){
String consonants = ".*[bcdfghj].*"; //list the characters to be checked
return searchString.matches(consonants);
}