我的问题很笼统 - 我想问一下编程语言中是否有任何特殊模块,或者是一个可以让我完成任务的现成程序。
是否有任何方便的方法(除了用多个替换语句编写自己的函数)自动将所有国家字符替换为共同字母?例如,我想将æ替换为 ae ,将ä替换为 a , <到 e 等等。
如果无法准备通用功能,那么目前使用的编程语言中是否有任何就绪功能,只需将允许的字符限制为标准拉丁字母的字符就可以删除这些字符?
答案 0 :(得分:2)
有unidecode,可用于多种语言(perl,python,java)。我之前写的是in this answer。
>>> from unidecode import unidecode
>>> unidecode(u"İstanbul")
'Istanbul'
>>> unidecode(u"\u5317\u4EB0")
'Bei Jing '
答案 1 :(得分:1)
音译就是你要找的词:)
在php中,这是通过iconv实现的: http://php.net/manual/en/function.iconv.php
正如其他人所说,如果可能的话,最好将所有内容保存在Unicode(utf8或16)中。
答案 2 :(得分:0)
我现在不使用你正在使用的语言,但是你可以在php中使用
$text = preg_replace("/[^a-zA-Z0-9]+/", "", $text);
您可以更改reg exp以允许更多/更少的字符。
答案 3 :(得分:0)
在PHP中,您可以扫描目录中的文件:
<?php
$dir = '';
if ($handle = opendir($dir)) {
while (false !== ($file = readdir($handle))) {
if ($file[0] == '.' || is_dir($dir.'/'.$file)) {
continue;
}
//functions here
}
closedir($handle);
}
?>
然后用这个正则表达式重命名它们:
$newname = ereg_replace("[^A-Za-z0-9]", "", $oldname);
您可以将$ oldname设置为目录中每个文件的文件名,并将其放在//functions
所在的位置,该文件将遍历目录中的每个文件并根据正则表达式重命名。
答案 4 :(得分:0)
如果您的输入是Unicode,则可以应用Unicode normalization NKFD来近似您想要的内容。 Python有这个built-in。标准化后,您可以去除重音符号,这些重音符号将与它们所属的字母分开。
>>> import unicodedata
>>> s = u"äçéì" # u"" makes a Unicode string in Python 2.x
>>> unicodedata.normalize("NFKD", s).encode("ascii", errors="ignore")
'acei'
但这不适用于æ。