私は文字列"re\x{0301}sume\x{0301}"
(これは次のように表示されます:ré sumé)を逆にして"e\x{0301}muse\x{0301}r"
(é musé r)にします。 Perlのreverse
は、別の文字として"\x{0301}"
のような文字を扱うため、使用できません。したがって、"\x{0301}emus\x{0301}er"
(́ emuś er)になります。どのように文字列を逆にすることができますが、結合文字を尊重しますか?Perlで結合文字を含む文字列をどのように逆にすることができますか?
join
、その後、書記素のリストを逆に、(それらの間の空の文字列で)書記素のリストを作成する
split
でそれらを(非結合文字と、次の組み合わせのすべての文字に一致する)を使用することができます
うわー。私はperlが好きですが、その分割式はかなり魔法です。私の最初の考えは "ブルートフォース"でした。分割が何をするかを行う関数を作りました - それぞれのエントリが論理的な文字を表す文字列のリストを返します。しかし、あなたはそのリスト(@xと呼ぶ)を得るが、幸いなことにjoin( ''、reverse(@x))の部分は明らかに続く。 – Roboprog
Magical?どうして?それは副作用のない単なる正規表現であり、あなたが見るものだけを正確に行います。それが魔法だと思うなら、あなたはPerlの本当の黒い芸術を見たことがありません。あなたはそれを賢明と呼ぶかもしれませんが(私はそうしませんが)、それは魔法ではありません。これはおそらく今まで使ったことのないものです。 –
私はPerl v5.12.4を使ってこの例を実行しようとしましたが、動作しませんでした。代わりに/(\ X)/を使用しました。 この回答はPerlの以前のバージョンでは機能しましたか? – Flimm