2016-04-19 5 views
-2

私のようなXMLに似た形式のファイルを使用しています動作しません文字列)メソッド。これは、終了タグ例えば<Student>のために正常に動作します<Tables>が、終了タグのために間違ったインデックスを与えている例えばここで</Tables>または</Students>C#string.IndexOfは()が正しく

私のコードです:

dbFileString.Substring(dbFileString.IndexOf("<Tables>") + "<Tables>".Length, dbFileString.IndexOf("</Tables>")); 

助けてください。

+2

あなたがそれを使用しているコードは、我々はあなたが私たちの問題を含むコードが表示されない場合は、あなたの問題を見つけることができません 'IndexOf'含ま提示してください。また、なぜあなたは 'IndexOf'を使用していますか?.NETに組み込まれているXML解析クラスの1つではありませんか? –

+0

申し訳ありませんが、コードは非常に基本的なので必要ではないと思っていましたが、リクエストしたとおり、ここにあります: dbFileString.Substring(dbFileString.IndexOf( "")+ "Student_Courses>" Length、dbFileString.IndexOf( "")); –

+2

XMLを手作業で解析しようとしていますか? –

答えて

7

これはあなたの問題であるIndexOfではなく、Substringです。 2番目のパラメータは、終わりのインデックスではなく、部分文字列の長さである必要があります。 2番目のパラメータとして「終了インデックス - 開始インデックス」を渡す必要があります。

var startingIndex = dbFileString.IndexOf("<Tables>") + "<Tables>".Length 
var endingIndex = dbFileString.IndexOf("</Tables>")' 
var result = dbFileString.Substring(startingIndex, endingIndex - startingIndex); 

しかし、私は本当にあなたが手でXMLを解析し、代わりにXmlDocumentようなものを使用して、このアプローチを停止お勧めします。

+0

Scottありがとうございましたが、私はすでにXMLではないことを明確にしました。これはXML構造の一種であり、私は選択しました。しかし、今私は間違いを知っています。はい、それは2番目のパラメータの文字列の長さでなければなりません。今すぐうまくいく! –

+0

@ ZohaibAslam明らかに、使用した各方法の説明を読んでおく必要があります(そうでなければ、質問に十分な研究をしていないことを示しています)ので、この良い答えがどのように役立つか分かりません...あなたがそれを受け入れたので、それはあなたがしなかったことを意味し、良い古いdownvoteに値する。 –

+0

@AlexiLevenkovそれは問題ではありませんが、実際には今日はC#でプログラミングを開始しましたが、私は間違いを知るためにインターネットですべてサーフィンしましたが、この小さなばかげたミスを理解するにはあまりにも混乱しました。あなたが使用しているほとんどすべての方法でインターネットをサーフィンしなければならない場合、それは起こります。だから下位票、上向き票は問題ではない。答えは私の問題を解決しました。 :) –

0

dbFileString.Substring(int startIndex、int length)は正しい構文です。 ここで達成したいことを指定した場合は役に立ちます。 コードごとに、テーブルとテーブルの間でデータを取得しようとしていると仮定します。 以下のコードを参考にしてください。

dbFileString.Substring(dbFileString.IndexOf("<Tables>")+"<Tables>".Length, dbFileString.Length-("</Tables>".Length) - ("Tables".Length));