1

Request.queryString によって受信された文字列とファイル .resx からの行の文字列比較に問題があります。

コードはRequest.queryStringという名前の変数を受け取ってから、行に値が含まれてqいるかどうかを比較する関数に移動します。q

        while ((line = filehtml.ReadLine()) != null)
        {
            if (line.ToLower().Contains(q.ToLower().ToString()))
                HttpContext.Current.Response.Write("<b>Content found!</b>");
            else
                HttpContext.Current.Response.Write("<b>Content not found!</b>");
        }

これは静的ファイルでの検索であるIberêため.Contains、特殊文字を考慮して検索する必要があります。.IndexOf.LastindexOfiber&ecirc;qiber&#234;

ResXResourceReader (Visual Studio では見つからない)、ResourceReader および ResourceManager (これらは、読み取り対象のパスで静的ファイルを設定できませんでした) を使用しようとしたことを考慮してください。


編集:

問題が解決しました。メソッドで値をSpecialChars上書きする のインスタンスがありましたqEntitiesEncode

4

1 に答える 1

3

問題は、ê文字が両方の文字列でエスケープされていることです。したがって、次のようなことをすると、うまくいきません。

        string line = "sample iber&ecirc; text";
        string q = "iber&#234;";
        if (line.Contains(q)) {
            // do something
        }

文字列をエスケープ解除する必要があります。組み立てで使用HttpUtilityします。System.Webこれはうまくいきます:

        line = System.Web.HttpUtility.HtmlDecode(line);
        q = System.Web.HttpUtility.HtmlDecode(q);
        if (line.Contains(q)) {
            // do something
        }

以下の @r3bel で提案されているように、.net 4 以降を使用している場合は も使用できるSystem.Net.WebUtility.HtmlDecodeため、追加のアセンブリ参照は必要ありません。

于 2013-04-11T15:27:50.053 に答える