1. ホーム
  2. java

[解決済み] 文字列がASCIIのみを含むかどうかを確認するには?

2022-06-25 05:56:01

質問

呼び出し Character.isLetter(c)true を返します。しかし、もし String が ASCII の基本文字だけを含んでいるかどうかをすばやく見つける方法はありますか?

どのように解決するのですか?

から グアバ 19.0 以降は使用可能です。

boolean isAscii = CharMatcher.ascii().matchesAllOf(someString);

これは matchesAllOf(someString) メソッドを使用し、これはファクトリーメソッドである ascii() ではなく、現在では非推奨の ASCII シングルトンではなく

ここでASCIIは、すべてのASCII文字を含む を含む よりも低い印字不可能な文字 0x20 (スペース) よりも小さい文字 (タブ、改行、リターンなど) を含みますが、さらに BEL というコードで 0x07DEL というコードで 0x7F .

このコードでは、以前のバージョンのコメントでコードポイントが示されていたとしても、コードポイントではなく文字が誤って使用されています。幸いなことに、コードポイントを作成するために必要な文字は、値が U+010000 以上の値を持つコードポイントを作成するために必要な文字は、ASCIIの範囲外の値を持つ2つのサロゲート文字を使用しています。そのため、このメソッドは、絵文字を含む文字列であっても、ASCII のテストにまだ成功しています。

以前のGuavaのバージョンで ascii() メソッドがない以前のGuavaでは、このように書くことができます。

boolean isAscii = CharMatcher.ASCII.matchesAllOf(someString);