我的问题很笼统——我想问一下编程语言中是否有任何特殊模块或现成的程序可以让我完成我的任务。
有没有方便的方法(除了用多个替换语句编写自己的函数)自动将所有国家字符替换为对应的字母?例如,我想将æ替换为ae,将ä替换为a,将ę替换为e等等。
如果不可能准备通用功能,那么当前使用的编程语言中是否有任何现成的功能,只需将允许的字符限制为标准拉丁字母表中的字符,就可以删除这些字符?
我的问题很笼统——我想问一下编程语言中是否有任何特殊模块或现成的程序可以让我完成我的任务。
有没有方便的方法(除了用多个替换语句编写自己的函数)自动将所有国家字符替换为对应的字母?例如,我想将æ替换为ae,将ä替换为a,将ę替换为e等等。
如果不可能准备通用功能,那么当前使用的编程语言中是否有任何现成的功能,只需将允许的字符限制为标准拉丁字母表中的字符,就可以删除这些字符?
There is unidecode, which is available for several languages (perl, python, java). I've previous written about it in this answer.
>>> from unidecode import unidecode
>>> unidecode(u"İstanbul")
'Istanbul'
>>> unidecode(u"\u5317\u4EB0")
'Bei Jing '
音译是您要查找的单词 :)
在php中,这是通过iconv实现的:http: //php.net/manual/en/function.iconv.php
正如其他人所说,如果可能,最好将所有内容保存在 Unicode(utf8 或 16)中。
我现在不知道您使用的是什么语言,但是在 php 中您可以做到
$text = preg_replace("/[^a-zA-Z0-9]+/", "", $text);
您可以更改 reg exp 以允许更多/更少的字符。
在 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
,这将遍历目录中的每个文件并根据正则表达式重命名它。
如果您的输入是 Unicode,您可以应用Unicode 规范化NKFD 来近似您想要的。Python 有这个内置的. 标准化后,您可以去除重音符号,这将与它们所属的字母分开。
>>> import unicodedata
>>> s = u"äçéì" # u"" makes a Unicode string in Python 2.x
>>> unicodedata.normalize("NFKD", s).encode("ascii", errors="ignore")
'acei'
不过,这对æ 不起作用。