• ベストアンサー

C#で文字列を抜き出す

C#で”<”から”>”までの間の文字列を抜き出そうとしていますが、間に改行が入ると抜き出す事ができなくなってしまいます。 何かいい方法があったら教えて下さい。 初心者なので質問内容が分かりにくいかもしれませんが宜しくお願い致します。 if (HTML.StartsWith("<")) { endlen = HTML.IndexOf(">"); writer.WriteLine("tag"+"["+"]"); httext[0] = HTML.Substring(0,endlen); HTML = HTML.Remove(0,endlen1); }

質問者が選んだベストアンサー

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.3

同じようなコードを書いて、試してみましたが、 間に改行があっても、問題なく実行できました。 1つ指摘しておきたいのは、 Substringは、 Substring(取り出し開始文字位置,文字数) であって、後ろの引数は終了文字位置ではないことです。 0123456 <TITLE> の時 endlenは、6ですが、これは、文字位置を表しているのであって、変数名のように文字数の長さ(length)を表しているのではありません。 従って、 Substringや、Removeで (o,endlen)としていするのは、 <TITLE をあらわしていることになります。 これは、多分意図していることと異なるのではないですか? ちなみに、タグを取り出したいのだから (1,endlen)とした方がいいのかもしれません。 あと、Remove(0,endlen1); は、綴り間違いか、あるいは Remove(0,endlen+1); ではありませんか?

winlook
質問者

お礼

ありがとうございます! そうですかぁ、勘違いしてました・・。 Substring(取り出し開始文字位置,文字数)だったんですね。 まだまだ勉強不足で申し訳ありませんでした ありがとうございました!

その他の回答 (2)

回答No.2

改行コードが含まれていて問題になるのであれば、 検索処理の前に改行コードを 削除または""に置き換えるという処理をいれてみてはどうでしょうか? 頭の悪い方法しか思いつかなくてすみません。

winlook
質問者

補足

頭の悪い方法じゃないですよ~ ご意見いただいて本当に感謝しております。 blackbrainの方法は私も考えたんですが、後々の処理を考えて改行コードを含めて抜き出したいと考えています。 ご回答本当に有難うございます。

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

文字列を保持している HTML に、改行を含んだデータは取り込めているのですか? 一行分しか取り込んでいないのだったら ウマくいかないのは当たり前だと思うのですが

winlook
質問者

補足

ご回答有難うございます。 変数の中に改行を含んだ全ての文字列を取り込んでありますので1行分しか取り込んでないと言う事は無いと思います。

関連するQ&A