2012-12-19 133 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(「 ù「))'等),但除此之外,我喜歡這個答案,因爲它可能對初學者更有意義。 –

相關問題