1

在 Java 中,我们如何检查一个字符串是否包含法语字母?

4

4 回答 4

4
public static boolean containsFrench(String s) {
    Pattern frenchPattern = Pattern.compile("(?i)[çèéêîôœû]");
    return frenchPattern.matcher(s).find();
}
于 2012-12-19T23:50:58.860 回答
2

由于“法语字母”的概念定义不明确,解决此问题的最简单方法是创建一个包含您认为符合条件的所有字母的数组,然后测试字符串中的每个字符以查看它是否在数组中:

(我不会为你写代码,因为这是任何学习过 Java 课程或教程的人都应该能够在 5 分钟内编写的东西。如果你不能在 5 分钟内完成,那么你需要自己动手练习。)

有更优雅和/或更有效的方法来做到这一点。但简单对初学者有好处。

于 2012-12-19T23:44:27.410 回答
1

快速解决方案 - 您可能想要检查列表是否详尽(例如,我没有包括重音大写字母或不太常见的 ÿ),但这个概念应该有效:

public static void main(String[] args) {
    Set<Character> frenchLetters = new HashSet<> (Arrays.asList('â', 'à', 'ç', 'é', 'ê', 'ë', 'è', 'ï', 'î', 'ô', 'û', 'ù'));
    String s = "abcdà";
    for (char c : s.toCharArray()) {
        if (frenchLetters.contains(c)) {
            System.out.println("Found a French letter: " + c);
        }
    }
}
于 2012-12-19T23:50:00.737 回答
0

尝试:

public boolean hasFrenchCharacter(String input) {
    if (input.contains("ù") == true) return true;
    if (input.contains("û") == true) return true;
    if (input.contains("ü") == true) return true;
    if (input.contains("ÿ") == true) return true;
    if (input.contains("à") == true) return true;
    if (input.contains("â") == true) return true;
    if (input.contains("æ") == true) return true;
    if (input.contains("ç") == true) return true;
    if (input.contains("é") == true) return true;
    if (input.contains("è") == true) return true;
    if (input.contains("ê") == true) return true;
    if (input.contains("ë") == true) return true;
    if (input.contains("ï") == true) return true;
    if (input.contains("î") == true) return true;
    if (input.contains("ô") == true) return true;
    if (input.contains("œ") == true) return true;
    return false;
}

如果它有法语字符,它将返回 true,否则返回 false。

真的这不是我会这样做的方式,我会这样做:

public boolean hasFrenchCharacter(String input) {
    return input.contains("ù") ||
           input.contains("û") ||
           input.contains("ü");
    //and so on...
}
于 2012-12-19T23:53:33.800 回答