在Java中,是否可以检查字符串是否仅为ASCII?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (95)

如果字符是字母,则isLetter(C)返回true。但是,是否有一种快速查找字符串是否只包含ASCII的基字符的方法?

提问于
用户回答回答于

你可以:

boolean isAscii = CharMatcher.ASCII.matchesAllOf(someString);
用户回答回答于

你可以用java.nio.charset.Charset

import java.nio.charset.Charset;
import java.nio.charset.CharsetEncoder;

public class StringUtils {

  static CharsetEncoder asciiEncoder = 
      Charset.forName("US-ASCII").newEncoder(); // or "ISO-8859-1" for ISO Latin 1

  public static boolean isPureAscii(String v) {
    return asciiEncoder.canEncode(v);
  }

  public static void main (String args[])
    throws Exception {

     String test = "Réal";
     System.out.println(test + " isPureAscii() : " + StringUtils.isPureAscii(test));
     test = "Real";
     System.out.println(test + " isPureAscii() : " + StringUtils.isPureAscii(test));

     /*
      * output :
      *   Réal isPureAscii() : false
      *   Real isPureAscii() : true
      */
  }
}

扫码关注云+社区

领取腾讯云代金券