chargeのブログ

人のブログを見て真似して書いていきます。似たブログを見つけたら教えてください。

文字を高速で検索する方法

2016-07-10 05:00:00 | 日記
 最近、JISコードの第一・二水準に入力された文字列が収まっているかが気になっている。今まで、JavaScriptで正規表現を使って探索していたわけだが、Javaに入れようとしたらPatternのコンパイルでスタックオーバーフローになってしまった。
 やむなく、FORループで探索することにしたわけだが、完全にリニアで探索したので遅い。もう少し改良の余地がないかどうか考えたところ、文字列を数値のとみなして場合分けし、すべての文字コードを網羅し、Unicodeの数値の大小によってソートした文字列における探索の開始・終了位置を変えると早くなる感じであった。サロゲートペアも工夫して大丈夫になったので、何とか実用に耐えるような気がする。
 ネットを探しても不思議なことに誰もJISの第一・二水準以外をはじこうとする人はいるのに、すべて網羅してソートして、文字コードによって開始位置と終了位置を変えるIF文を書いた人は見かけない。自分が第一号なのだろうか、それともやり方が誤っているのだろうか。まあ、なんにせよ出来るのだからよいということにしよう。日本・中国・台湾の行政におけるIT導入を遅らせた漢字の呪いが少し和らぐだけで大進歩だと思う。

7月9日(土)のつぶやき

2016-07-10 04:55:34 | 日記

ソースコードの表示

<style type="text/css"> /* Source Code CSS */ pre.code { font-size: 12px; /* line-height:1.2em; */ border:1px solid #aaa; background:#f0f0f0; padding:0.5em; overflow: auto; } pre.code span.tag { color: #0000ff; } pre.code span.attr { color: #000; } pre.code span.value { color: #900; } pre.code span.str { color: #009900; } pre.code span.num { color: #009900; } pre.code span.keyword { color: #0000ff; } pre.code span.rem { color: #909; } pre.code span.variable { color: #500050; } </style>