Next: , Previous: Substr, Up: 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は引数を与えたときだけ認識されます。