【发布时间】:2009-05-01 10:43:23
【问题描述】:
如何确定 String 是否只包含字母并且我想要的只是 [a-zA-Z]+,那么有什么方法可以通过 Locale 确定字母吗?
【问题讨论】:
标签: java string localization
如何确定 String 是否只包含字母并且我想要的只是 [a-zA-Z]+,那么有什么方法可以通过 Locale 确定字母吗?
【问题讨论】:
标签: java string localization
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)方法获取。
【讨论】:
另外看看 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.* 包完成此任务。
【讨论】: