2012-12-19 76 views
1

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

+3

使法国字母的排列并核对? – Doorknob

+2

什么是“法文字母”?拉丁字符?只有以法文显示的特定字母(如果是,哪些字母)? –

+0

谢谢,我的意思是法语特殊字符(带有口音的那些!)。 – Ashkan

回答

4
public static boolean containsFrench(String s) { 
    Pattern frenchPattern = Pattern.compile("(?i)[çèéêîôœû]"); 
    return frenchPattern.matcher(s).find(); 
} 
+0

+1比我的天真循环好很多;-) – assylias

2

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

(我不打算为你编写代码,因为这是任何人完成Java课程或教程应该能够在五分钟内写入的东西,如果你不能在5分钟内完成,然后你需要亲自练习)。

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

1

快速的解决方案 - 你可能要检查列表是详尽的(例如,我没有将重音的大帽或者这是不是很普遍在Y),但这个概念应该工作:

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); 
     } 
    } 
} 
+0

这可能需要'frenchLetters.contains(Character.toLowerCase(c))' –

+1

@BrendanLong'Character.toLowerCase'不是locale知道的,所以可能会导致意外的结果。 'String.toLowerCase(Locale.FR)'是有道理的。但我不知道是否所有重音大写字母都是有效的...... – assylias

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; 
} 

如果它有一个法国人的性格,否则为false这将返回true。

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

public boolean hasFrenchCharacter(String input) { 
    return input.contains("ù") || 
      input.contains("û") || 
      input.contains("ü"); 
    //and so on... 
} 
+2

'== true'是多余的(可以是'if(input.contains(“ ù“))'等),但除此之外,我喜欢这个答案,因为它可能对初学者更有意义。 –

相关问题