タグ

UnicodeとPerlに関するn2sのブックマーク (4)

  • Unicodeプロパティを使ったPerl正規表現 - Hatena Developer Blog

    こんにちは、Webアプリケーションエンジニアのid:nanto_viです。 Webアプリケーションを作っていると、「全角文字と半角文字を統一したい」「ユーザーの入力から漢字を抜き出したい」といったテキスト処理を行う場面にたびたび遭遇します。はてなではWebアプリケーションのサーバー側プログラミング言語としてPerlを多く使っていますが、PerlならこのようなときにUnicodeプロパティを用いた正規表現パターンで柔軟な処理が可能です。 Unicodeプロパティ 現在、ほとんどのプラットフォームで採用されている文字集合がUnicodeです。Unicodeでは文字だけでなくその文字の様々な特性(プロパティ)も定められており、テキスト処理の基礎情報として活用できます。 Perl正規表現でのUnicodeプロパティの利用 Perlの正規表現では、\p{Property_Name=Value}のよう

    Unicodeプロパティを使ったPerl正規表現 - Hatena Developer Blog
  • Text::VisualWidth::PP 0.02 がでていた - tokuhirom's blog

    Text::VisualWidth::PP 0.02 がでていた Text::VisualWidth::PP といえば、文字の幅が1文字幅か2文字幅かを判別してうまいことなにかやりたいときに便利なライブラリとして Perl 界では有名ですね。 このモジュール、もとはといえば mobirc を pure perl 化しようとしたときに Text::VisualWidth::XS の PP 版がなくてこまった!! っていう現象がおきたときに、つくったものなんですね。そんなモジュールが他でもつかわれるとは不思議なものです。 さて、そんな Text::VisualWidth::PP ですが、Songmu さんのブログで BEGIN { $Unicode::EastAsianWidth::EastAsian = 1; } をつかっていろいろがんばってる様子がのっておりまして、どうも、これは、楽をする

  • EastAsianWidth判別用コードを自動生成する - Islands in the byte stream (legacy)

    VisualWidth実装用に、Unicode::EastAsianWidth みたいなものを自動生成するためのスクリプトを書いた。unicode.orgからとってきたデータをもとに生成しているので安心。 これはJSX用だけど、他の適当な言語のためのコードを生成するのも難しくないはず。 #!/usr/bin/env perl use 5.14.0; use strict; use warnings; use LWP::Simple qw(get); use Text::Xslate; use Log::Minimal qw(infof); my $SPEC = "http://www.unicode.org/reports/tr11/"; my $DATA = "http://www.unicode.org/Public/UNIDATA/EastAsianWidth.txt"; my %p

    EastAsianWidth判別用コードを自動生成する - Islands in the byte stream (legacy)
  • 半角カナ混じりの文字幅を数える - Shohei Yoshida's Diary

    文字幅ってどうやって調べるんだろって思って、 使えるモジュールを探してみた。 #!/usr/bin/env perl use strict; use warnings; use utf8; my $str = "リンゴゴリラ"; { use Unicode::Japanese; printf "[%s] length = %d\n", 'Unicode::Japanese', Unicode::Japanese->new($str)->strlen; } { use Text::VisualWidth::UTF8; printf "[%s] length = %d\n", 'Text::VisualWidth', Text::VisualWidth::UTF8::width($str); } { use Unicode::EastAsianWidth; my $count_length

    半角カナ混じりの文字幅を数える - Shohei Yoshida's Diary
    n2s
    n2s 2012/03/02
    手軽で正確なのがText::VisualWidth::UTF8::width()。Unicode::EastAsianWidth+正規表現で数える方法は日本語以外でも使える、と。Unicode::Japaneseは半角カナを誤判定する(0.49現在も)ので非推奨。
  • 1