次: , 前: Substr, 上: Text handling


10.5 文字の置換

文字の置き換えはtranslitで行います。

     translit(string, chars, replacement)

stringの各文字のうちcharsに出て来る文字をそれぞれ replacement中で同じ位置にある文字に置き換えたものに展開されます。

replacementcharsより短いときは 余分な文字は展開後のテキストから削除されます。 replacementを省略すると展開後のテキストは stringからcharsに含まれる文字すべてを削除したものになります。

charsreplacementのどちらにも文字範囲を含めることができます。 たとえば`a-z' (すべての小文字アルファベット)や `0-9' (すべての数字)などです。 charsreplacementにダッシュ`-'そのものを含めるときは 最初か最後に置いてください。

範囲の最後の文字が最初の文字より`小さい'場合もエラーではありません。 そういうケースでは範囲が逆に広がります。 つまり`9-0'は文字列`9876543210'を意味します。

     translit(`GNUs not Unix', `A-Z')
     =>s not nix
     translit(`GNUs not Unix', `a-z', `A-Z')
     =>GNUS NOT UNIX
     translit(`GNUs not Unix', `A-Z', `z-a')
     =>tmfs not fnix

最初の例は大文字のアルファベットをすべて削除します。 2番目の例は小文字を大文字に変換します。 3番目の例は大文字すべてを小文字に変換しながら`反転'させます。 使用頻度は最初の2つの例のほうがはるかに高いです。

組み込みマクロtranslitは引数を与えたときだけ認識されます。