我的perl腳本提供了UTF-8中的任何語言的字符串。我需要大寫每個單詞的第一個字符,並將單詞的其餘字符轉換爲小寫。這必須在以UTF-8格式保留文本時完成。perl中UTF-8文本的詞邊界
以下似乎工作不夠好,當文本只包含拉丁字符
$my_string =~ s/([\w']+)/\u\L$1/g;
我如何能得到這個在UTF-8字符串工作嗎?
我的perl腳本提供了UTF-8中的任何語言的字符串。我需要大寫每個單詞的第一個字符,並將單詞的其餘字符轉換爲小寫。這必須在以UTF-8格式保留文本時完成。perl中UTF-8文本的詞邊界
以下似乎工作不夠好,當文本只包含拉丁字符
$my_string =~ s/([\w']+)/\u\L$1/g;
我如何能得到這個在UTF-8字符串工作嗎?
請參閱perlunicode瞭解您需要熟悉的設施的概況。基本上,你正在尋找像\p{LC}
。
雖然您的問題空間並不明確,並非所有腳本都有字符大小寫的概念。 LC屬性只會在腳本上匹配,所以它應該讓你在那裏。
Perl沒有UTF-8字符串。它具有Unicode字符串,它有字節字符串,以字節爲單位。你在那裏寫的東西在當前版本的Perl中已經可以正常工作了。您可能需要在編譯單元的頂部使用類似'use v5.12','use v5.14'或'use feature「unicode_strings」'的東西來使其工作,但不需要其他任何東西。 – tchrist
謝謝。我忘了提及我使用的Web服務器仍然有5.8 perl,所以不幸的是我沒有提供這些建議。 – appleton