2017-11-12

VBS で Unicode の方向制御文字を削除する

写真を EXIF 情報に従ってフォルダ分けするスクリプトを VBScript で書いてたんだけど、何故か手動で作ったフォルダと混ぜるとキレイにソートしなくて、何でかなーと思って色々と調べてたら、方向制御文字が入っていたのが原因だった。
# コマンドプロンプトで dir コマンドで見ると確かになんか入ってるのがわかった。WScript.Echo だとわからない。

そこで、方向制御文字を消す方法で悩んだので、メモ。

関数「removeInvisibleCharacter」を用意して、引数として渡せば、方向制御文字が取り除かれた文字列が戻ってくる感じ。

Function removeInvisibleCharacter(str)
str = Replace(str, ChrW(&H200E), "") ' LEFT-TO-RIGHT MARK
str = Replace(str, ChrW(&H200F), "") ' RIGHT-TO-LEFT MARK
str = Replace(str, ChrW(&H202A), "") ' LEFT-TO-RIGHT EMBEDDING
str = Replace(str, ChrW(&H202B), "") ' RIGHT-TO-LEFT EMBEDDING
str = Replace(str, ChrW(&H202C), "") ' POP DIRECTIONAL FORMATTING
str = Replace(str, ChrW(&H202D), "") ' LEFT-TO-RIGHT OVERRIDE
str = Replace(str, ChrW(&H202E), "") ' RIGHT-TO-LEFT OVERRIDE
str = Replace(str, ChrW(&H2066), "") ' LEFT-TO-RIGHT ISOLATE
str = Replace(str, ChrW(&H2067), "") ' RIGHT-TO-LEFT ISOLATE
str = Replace(str, ChrW(&H2068), "") ' FIRST STRONG ISOLATE
str = Replace(str, ChrW(&H2069), "") ' POP DIRECTIONAL ISOLATE
removeInvisibleCharacter = str
End Function

removedText = removeInvisibleCharacter("Text including LRM, RLM, ...")

というわけで、いじょ。

0 件のコメント :

コメントを投稿