1

私の質問は一般的なものです。プログラミング言語に特別なモジュールがあるかどうか、または私のタスクを達成できる準備ができているプログラムがあるかどうかを尋ねたいと思います。

すべての国別文字を対応する文字に自動的に置き換える便利な方法はありますか (複数の replace ステートメントを使用して独自の関数を記述する以外に)。たとえば、æaeに、äaに、ęeに、などと置き換えます。

汎用関数を用意できない場合、現在使用されているプログラミング言語で、使用できる文字を標準のラテン アルファベットの文字のみに制限するだけで、そのような文字を削除する準備ができている関数はありますか?

4

5 に答える 5

2

いくつかの言語 (perl、python、java) で利用できるunidecodeがあります。以前にこの回答で書いたことがあります。

>>> from unidecode import unidecode
>>> unidecode(u"İstanbul")
'Istanbul'
>>> unidecode(u"\u5317\u4EB0")
'Bei Jing '
于 2012-02-26T21:15:13.927 に答える
1

音訳はあなたが探している言葉です:)

PHP では、iconv によって実現されます: http://php.net/manual/en/function.iconv.php

他の人が言ったように、可能であればすべてを Unicode (utf8 または 16) に保つのがおそらく最善です。

于 2012-02-26T17:57:04.137 に答える
0

私は今あなたが使用している言語を知りませんが、PHPで行うことができます

$text = preg_replace("/[^a-zA-Z0-9]+/", "", $text);

正規表現を変更して、より多くの/より少ない文字を許可できます。

于 2012-02-26T17:57:39.980 に答える
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これにより、ディレクトリ内の各ファイルが調べられ、正規表現に従って名前が変更されます。

于 2012-02-26T17:59:25.197 に答える
0

入力が 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'

ただし、これは æ では機能しません。

于 2012-02-26T17:59:53.687 に答える