|
文字変換について知恵を貸していただけると助かります。
個人的に文字コードがSJISで済むモノはそれで済ませたいと考えています。
やりたいことが2つあります。
@Unicodeの半角カタカナを全角に変換したい。
コード範囲は調べたので関数で変換したのですが、濁点と半濁点が付いていると2文字に分かれたままになってしまいます。
末尾の記号が緯度経度や時間表記に使われているので、次のように二段構えにしてみました。
replaceall "([\\uff61-\\uff9d])", "\\(1,ToZenkakuKata)", regular, nocasesense ;
replaceall "([\\u30a0-\\u30ff][\\uff61-\\uff9f])", "\\(0,ToZenkakuKata)", regular, nocasesense ;
1行目の全角への変革は成功するのですが。2行目の濁点と半濁点付きで失敗します。
良い方法はないでしょうか。
AUnicodeのひらがなカタカナの濁点半濁点付きをSJISに変換したい。
現状は全部ピックアップして置換するという力技で処理しています。こんな感じで。
replaceall "ぱ", "ぱ", noregular, nocasesense ;
replaceall "ぴ", "ぴ", noregular, nocasesense ;
replaceall "ぷ", "ぷ", noregular, nocasesense ;
replaceall "ぺ", "ぺ", noregular, nocasesense ;
replaceall "ぽ", "ぽ", noregular, nocasesense ;
replaceall "パ", "パ", noregular, nocasesense ;
replaceall "ピ", "ピ", noregular, nocasesense ;
replaceall "プ", "プ", noregular, nocasesense ;
replaceall "ペ", "ペ", noregular, nocasesense ;
replaceall "ポ", "ポ", noregular, nocasesense ;
replaceall "ば", "ば", noregular, nocasesense ;
replaceall "び", "び", noregular, nocasesense ;
replaceall "ぶ", "ぶ", noregular, nocasesense ;
replaceall "ベ", "ベ", noregular, nocasesense ;
replaceall "ぼ", "ぼ", noregular, nocasesense ;
replaceall "バ", "バ", noregular, nocasesense ;
replaceall "ビ", "ビ", noregular, nocasesense ;
replaceall "ブ", "ブ", noregular, nocasesense ;
replaceall "べ", "べ", noregular, nocasesense ;
replaceall "ボ", "ボ", noregular, nocasesense ;
これを追加したところマクロの処理時間が明らかに伸びてしまいました。一瞬『PCが固まった!?』と思ってしまいました。
濁点と半濁点の文字コードが変化しないので、正規表現でスマートに高速に置換できたらと考えています。
これが上手くいくと、前述の@も似た手法でできるのではないかと考えているのですが。
宜しくお願いします。
|
|