0

文字列を解析してアルファベットのみにしようとしているので、句読点、数字、記号などはすべて区切り記号として扱われます。ここに私の問題があります。区切る文字以外の文字がたくさんあります。

そのようなすべての文字をフィルタリングする方法はありますか? 標準の英字は 26 文字で、大文字を数えると 52 文字です。ASCII/Unicode が実際にはこのように機能しないことはわかっていますが、許可したいすべての文字を提供し、ASCII/Unicode テーブルの他のすべてを区切り文字。

だから私は尋ねていると思います、このようなことは可能ですか?65 ~ 90 および 97 ~ 122 (Unicode) の範囲外のものをすべて分離できますか?

私は現在、これを区切り文字列として使用しており、キャッチする必要がある文字のおそらく 95% をキャプチャしますが、もっと充実したものが欲しいです:

#define DELIMITERS " 0123456789<>?:,./;'[]{}-=_+\\\""
4

4 に答える 4

1

これを行う標準的な方法は、たとえば、正規表現[^a-zA-Z]+を使用することです。

于 2013-06-04T01:03:50.200 に答える
1

別の方法 -- ctype.h の isalpha() を使用します

char ok[80]={0x0};  // 80 bytes max
char *p=input_str;
char *q=ok;
for(*q=0x0; *p; p++)
{
    if( isalpha((int)*p) )
    {
        *q=*p;
        q++;
        *q=0x0;
    }
}
printf("%s\n", ok);
于 2013-06-04T01:24:44.797 に答える