0

ウェブサイトからテキストの説明を取得しようとしていて、このコードを使用しました

            HttpResponseMessage response1 = await httpClient.GetAsync(url);
            response1.EnsureSuccessStatusCode();
            string srcCode = await response1.Content.ReadAsStringAsync();
            string desc = "";
            rem = @"id=""full_notes"">";
            if (srcCode.IndexOf(rem) != -1)
            {
                desc = srcCode.Remove(0, srcCode.IndexOf(rem) + rem.Length);
                rem = @"<a href=""#"">less</a></span>";
                desc = desc.Remove(desc.IndexOf(rem));
            }
            else
            {
                rem = @"<span>Description:</span>";
                desc = srcCode.Remove(0, srcCode.IndexOf(rem) + rem.Length+15);
                rem = "</div>";
                desc = desc.Remove(desc.IndexOf(rem));
            }
            string rep = @"""";
            desc.Replace("&quot;",rep);
            on.Description = desc;

すべてうまくいき、テキストブロックに表示しますが、取得したテキストに引用符 "" が含まれていると問題が発生し、テキストブロックには " の代わりに " のみが表示されます。

注:コードに示されているようにreplaceを使用しようとしましたが、機能しませんでした

4

1 に答える 1

3

呼び出していますReplaceが、結果に対して何もしていません。C# では文字列は不変であるため、Replaceメソッドは既存の文字列の内容を変更しません。ドキュメントに記載されているように:

このメソッドは、現在のインスタンスの値を変更しません。代わりに、出現するすべてのoldValueがnewValueに置き換えられた新しい文字列を返します。

したがって、次のものが必要です。

desc = desc.Replace("&quot;", "\"");

ただし、基本的には、HTML パーサー ( HTML Agility Packなど)を使用した方がよいと思います。この種のエンティティ置換を実行できるはずです。

于 2013-11-01T06:52:53.947 に答える