首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何检查字符串是否只包含ASCII?

如何检查字符串是否只包含ASCII?
EN

Stack Overflow用户
提问于 2010-08-27 22:19:11
回答 13查看 112.7K关注 0票数 133

如果字符是字母,则调用Character.isLetter(c)返回true。但是,有没有一种方法可以快速发现String是否只包含ASCII码的基本字符?

EN

回答 13

Stack Overflow用户

发布于 2010-08-27 22:37:44

你可以用java.nio.charset.Charset做到这一点。

import java.nio.charset.Charset;

public class StringUtils {

  public static boolean isPureAscii(String v) {
    return Charset.forName("US-ASCII").newEncoder().canEncode(v);
    // or "ISO-8859-1" for ISO Latin 1
    // or StandardCharsets.US_ASCII with JDK1.7+
  }

  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
      */
  }
}

Detect non-ASCII character in a String

票数 122
EN

Stack Overflow用户

发布于 2010-08-27 22:40:50

这是另一种不依赖于库,而是使用正则表达式的方法。

您可以使用这一行:

text.matches("\\A\\p{ASCII}*\\z")

整个示例程序:

public class Main {
    public static void main(String[] args) {
        char nonAscii = 0x00FF;
        String asciiText = "Hello";
        String nonAsciiText = "Buy: " + nonAscii;
        System.out.println(asciiText.matches("\\A\\p{ASCII}*\\z"));
        System.out.println(nonAsciiText.matches("\\A\\p{ASCII}*\\z"));
    }
}
票数 81
EN

Stack Overflow用户

发布于 2010-08-27 23:37:23

遍历字符串并确保所有字符的值都小于128。

Java字符串在概念上编码为UTF-16。在UTF-16中,ASCII字符集被编码为值0- 127,并且保证任何非ASCII字符(可能由多个Java字符组成)的编码不包括数字0- 127

票数 60
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3585053

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档