すべてのUnicode文字をループしないで、特定のプロパティを持つ文字のリストを取得するにはどうすればよいですか?特に、数字(つまり/\d/
に一致する文字)のすべての文字のリストが必要です。私はUnicode::UCD
を見てきました、そして、それは与えられた文字の特性を決定するのに便利ですが、そこからプロパティを持つリスト文字を得る方法はないようです。特定のプロパティを持つすべてのUnicode文字のリストを取得するにはどうすればよいですか?
答えて
各クラスのUnicode文字のリストは、あなたがPerlをコンパイルするときにUnicodeの仕様から生成され、典型的には、例えばは/ usr/libに/ perlの-YOURPERLVERSION/UNICORE/libに/ gc_sc/
に保存されていますIsDigit(別名\ d)と一致するUnicode文字範囲のリストは、/usr/lib/perl-YOURPERLVERSION/unicore/lib/gc_sc/Digit.plファイルに格納されます。
文字/ d/matchは正規表現の実装に完全に依存します(標準0-9は保証されます)。 perlの場合、perl localeは、どの文字がアルファベットと数字とみなされるかを定義するために使用されます。
Perlは正規表現エンジンを介してそれらを実行する前にUTF8に文字列を変換します。 perlのロケールが影響するのは、生のバイト文字列をutf8に変換する方法だけです。文字列がutf8になると、perlは常にロケールとは無関係にIsDigitと同じ定義を使用します。 – tetromino
反復せずに行う方法はありませんすべての文字を介して。 (それらのすべてで巨大な文字列を作成し、正規表現を使用する場合は、文字列を作成するために少なくとも1回ループを実行する必要があります)。
Perlビルドプロセスの幸いな部分は、既に多くの作業が行われているlibディレクトリの1つに 'unicore'の下に一連のファイルを作成します。私は彼らが公式かどうかわからない、私はPerl 5 Portersのリストに質問して、それらを使うのが安全かどうかを調べる。 –
さらにunicore/lib/gc_sc/Digit.pl
はunicore/To/Digit.pl
です。これは、Unicode数字文字(実際にはオフセット)を数値に直接マッピングします。
use Unicode::Digits qw/digit_to_int/;
my @digits;
for (split "\n", require "unicore/lib/gc_sc/Digit.pl") {
my ($s, $e) = map hex, split;
for (my $ord = $s; $ord <= $e; $ord++) {
my $chr = chr $ord;
push @{$digits[digits_to_int $chr]}, $chr;
}
}
for my $i (0 .. 9) {
my $re = join '', "[", @{$digits[$i]}, "]";
$digits[$i] = qr/$re/;
}
私が言うことができる:これは代わりの意味
my @digits;
for (split "\n", require "unicore/To/Digit.pl") {
my ($ord, $val) = split;
my $chr = chr hex $ord;
push @{$digits[$val]}, $chr;
}
for my $i (0 .. 9) {
my $re = join '', "[", @{$digits[$i]}, "]";
$digits[$i] = qr/$re/;
}
あるいはさらに良い:
my @digits;
for (split "\n", require "unicore/To/Digit.pl") {
my ($ord, $val) = split;
$digits[$val] .= "\\x{$ord}";
}
@digits = map { qr/[$_]/ } @digits;
- 1. ABRecordRefのすべてのプロパティのリストを取得するにはどうすればよいですか?
- 2. 特定の属性を持つリスト内のすべてのオブジェクトを取得するにはどうすればよいですか?
- 3. PHPのIMAPからUnicode文字を取得するにはどうすればよいですか?
- 4. メソッド名とパッケージ/クラス名を持つ特定のAnnotationを持つすべてのメソッドのjavadocを取得するにはどうすればよいですか?
- 5. すべての単語を特定の文字でgrepするにはどうすればよいですか?
- 6. JavaScript - 文字列の特定の値を取得するにはどうすればよいですか?
- 7. Gradleプロジェクトのすべての設定のリストを取得するにはどうすればよいですか?
- 8. 特定の文字の後に文字列を切り取るにはどうすればよいですか?
- 9. 特定の役割のすべてのユーザーを取得するにはどうすればよいですか?
- 10. 特定のユーザーのすべてのLDAPグループを取得するにはどうすればよいですか?
- 11. picasa api - アルバムIDを持つ特定のアルバムを取得するにはどうすればよいですか?
- 12. 特定のタグを持つRackSpaceサーバーを取得するにはどうすればよいですか?
- 13. 特定のOIDをサポートするデバイスのリストを取得するにはどうすればよいですか?
- 14. PHPですべてのアルファベット文字を取得するにはどうすればよいですか?
- 15. 特定の5つの特性を持つ従業員のリストを取得するにはどうすればよいですか?
- 16. C#で特定のサービスの子プロセスのリストを取得するにはどうすればよいですか?
- 17. すべての子エンティティの特定のプロパティをhibernateのリストとして取得するにはどうすればいいですか?
- 18. 特定のプロパティを持つすべてのデータを取得するSPARQL
- 19. 特定のノードからツリー祖先のリストを取得するにはどうすればよいですか?
- 20. 特定のタイプのCimInstanceプロパティを取得するにはどうすればよいですか?
- 21. リストの個別のプロパティ値の動的リストを取得するにはどうすればよいですか?
- 22. MongoDBデータベースの名前に特定の文字列を持つすべてのコレクションを検索するにはどうすればよいですか?
- 23. Grails:特定のプロパティでレコードを取得するにはどうすればよいですか?
- 24. GUI:特定のUnicode文字がサポートされているかどうかを確認するにはどうすればよいですか?
- 25. (Python、Pandas) - 特定の文字の左側にあるすべてのものを取得するにはどうすればよいですか?
- 26. Javaの文字列から特定の文字を除くすべての文字を削除するにはどうすればよいですか?
- 27. Tagプロパティで特定の値を持つTreeViewItemを見つけるにはどうすればいいですか
- 28. divに特定の値を持つ特定のcssプロパティがあるかどうかを確認するにはどうすればよいですか?
- 29. SonarQube APIを使用して特定の重大度を持つすべてのルールを取得するにはどうすればよいですか?
- 30. 特定のインデックスを持つNSTableViewの行オブジェクトを特定するにはどうすればよいですか?
ありがとう、これは私が探していたものとほぼ同じです。私はまだリストを構築するためにそれらの上にループを持っていますが、少なくともそれは永遠と一日かかることはありません。 –