【问题标题】:Java alphabets in different languages不同语言的 Java 字母表
【发布时间】:2009-05-01 10:43:23
【问题描述】:

如何确定 String 是否只包含字母并且我想要的只是 [a-zA-Z]+,那么有什么方法可以通过 Locale 确定字母吗?

【问题讨论】:

    标签: java string localization


    【解决方案1】:

    Character 类具有诸如 isLetter 之类的方法,这些方法将能够确定字符是否为该方法的 API 规范中定义的字母。

    还有另一种使用Character.UnicodeBlock 类的方法,它能够返回一个字符是否在Unicode 的特定字符块中。

    例如,我必须确定一个字符是否是全角katakana 字符,为了能够做到这一点,我必须使用Character.UnicodeBlock.of 方法:

    boolean isKatakana = 
        Character.UnicodeBlock.of(c) == Character.UnicodeBlock.KATAKANA;
    

    另外补充一点,String的某个索引处的字符可以通过charAt(int)方法获取,Unicode码位可以通过codePointAt(int)方法获取。

    【讨论】:

      【解决方案2】:

      另外看看 com.ibm.icu.text 包。例如,这个 sn-p 返回定义语言的所有字母:

      ULocale ulocale = com.ibm.icu.util.ULocale
          .forLocale(Locale.forLanguageTag(language));
      UnicodeSet set = LocaleData.getExemplarSet(ulocale, LocaleData.ES_STANDARD);
      Iterator<String> iterator = set.iterator();
      StringBuffer buf = new StringBuffer();
      while (iterator.hasNext()) {
        buf.append(iterator.next());
      
      }
      return buf.toString();
      

      无法通过 java.* 包完成此任务。

      【讨论】:

        猜你喜欢
        • 2015-08-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-05-21
        • 2013-02-19
        • 1970-01-01
        • 2020-07-25
        • 1970-01-01
        相关资源
        最近更新 更多