0

私はいくつかの異なる方法を試しましたが、どれも正しく機能しませんでした。その方法を教えてくれる人を探しています。アプリケーションで OpenFileDialog に基づいてファイルを読み込む必要があります。

ファイルが読み込まれたら、それを調べて、Linq を使用してデータを DB に挿入するこの関数を実行します。

 objSqlCommands.sqlCommandInsertorUpdate

ただし、「、」の数を数えて、文字列を調べたいと思います。数が4に達したら、次の「、」までに遭遇した文字のみを取得し、ファイルの最後までこれを行いたい..誰かがこれを行う方法を教えてもらえますか?

ここでの回答に基づいて、私のコードは次のようになります

string fileText = File.ReadAllText(ofd.FileName).Replace(Environment.NewLine, ",");

               int counter = 0;
               int idx = 0;
               List<string> foo = new List<string>();

               foreach (char c in fileText.ToArray())
               {
                   idx++;
                   if (c == ',')
                   {
                       counter++;
                   }
                   if (counter == 4)
                   {
                       string x = fileText.Substring(idx);
                       foo.Add(fileText.Substring(idx, x.IndexOf(',')));
                       counter = 0;
                   }
               }

               foreach (string s in foo)
               {
                   objSqlCommands.sqlCommandInsertorUpdate("INSERT", s);//laClient[0]);
               }

ただし、foo.add関数呼び出しで「長さを0未満にすることはできません」というエラーが表示されます。何かアイデアはありますか?

4

4 に答える 4

2

ややハックな例。ファイルのテキスト全体を単一の文字列としてこれに渡します。

string str = "1,2,3,4,i am some text,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20";
int counter = 0;
int idx = 0;
List<string> foo = new List<string>();

foreach (char c in str.ToArray())
{
     idx++;
     if (c == ',')
     {
          counter++;
     }
     if (counter == 4)
     {
          string x = str.Substring(idx);
          foo.Add(str.Substring(idx, x.IndexOf(',')));
          counter = 0;
     }
}

foreach(string s in foo)
{
     Console.WriteLine(s);
}
Console.Read();

版画:

  • i am some text
  • 9
  • 13
  • 17
于 2013-08-06T08:34:30.437 に答える
1

Raidriが彼の答えで示しているように、String.Split間違いなくあなたの友達です. 5 つおきの単語をキャッチするには、次のようにします (テストされていません)。

string fileText = File.ReadAllText(OpenDialog.FileName).Replace(Environment.NewLine, ",");

string words[] = fileText.Split(',');

List<string> everFifthWord = new List<string>();

for (int i = 4; i <= words.Length - 1, i + 5)
{
    everyFifthWord.Add(words[i]);
}

上記のコードは、選択したファイルを から読み取り、OpenFileDialogすべての改行を「,」に置き換えます。次に、文字列を "," で分割し、5 番目の単語から始めて、文字列の 5 番目の単語ごとにリストに追加します。

于 2013-08-06T08:34:42.180 に答える