2

テキストファイルと単語を受け取るプログラムを作成しています。テキスト ファイルを読み取り、現在読み取られている単語と単語を比較します。私がそれを構築した方法は、「's」を無視することでした。たとえば、「NASA​​」を検索していて、「NASA​​'s」という単語に出くわした場合、「NASA​​」と読みます。残念ながら、「if (ch == ''\')」を使用してもアポストロフィをキャッチできません。「ch」が現在の文字です。テキスト ファイル内のアポストロフィが次のようになっている可能性があります。それに対応する方法がわかりません。

アポストロフィをキャッチする必要があるのは次のとおりです。

else if (ch == '\'')
                {

#if 1           
                    printf("Comparing Apostrophe\n");
#endif
                    continue;

                }

これはより大きなプログラムの一部であるため、お見せすることはできません。これは、「else if」イオンの始まりを説明しています。

ありがとう。

4

3 に答える 3

3

アポストロフィが ''' のように見える場合は、''' 文字を確認するだけで、それは行われません。それは別の文字です - 拡張 ASCII 文字 146 (10 進数)、「右の単一引用符」のように見えます。テキストはおそらく MS Office からのものです - 一重引用符と二重引用符を一重引用符と二重引用符に変換するのが大好きです。指摘されているように、ASCII 文字 145 の「左一重引用符」は同じセットの残りの半分であるため、テキストにもそれらの一部が含まれている可能性があります。すなわち:

else if (ch == '\'' || ch == '’' || ch == '‘')
{
    [do stuff]
}
于 2013-10-07T17:12:46.397 に答える
0

エスケープ文字を使用する代わりに、アポストロフィに ASCII 番号を使用できます。これは 39 です: else if (ch == 39)

于 2013-10-07T17:13:57.257 に答える