1

VS 2008 を使用して asp.net c# プロジェクトをフレームワーク 3.5 に変換しました。アプリの目的は、同様の情報を多数含むテキスト ファイルを解析し、そのデータをデータベースに挿入することです。

私はオリジナルのアプリを書きませんでしたが、開発者は substring() を使用して個々のフィールドをフェッチしました。これは、フィールドが常に同じ位置から始まるためです。

私の質問は:

手動で位置をカウントすることなく、テキスト ファイル内の部分文字列のインデックスを見つける最良の方法は何ですか? テキストファイル内の文字の位置を見つけるために使用する好ましい方法を誰かが持っていますか?

4

4 に答える 4

0

私が読んでいるテキスト ファイルには区切り記号が含まれていません。フィールド間にスペースがあったり、一緒に実行されたりすることがあります。いずれの場合も、すべての行が同じようにフォーマットされます。質問をしたとき、メモ帳でファイルを見ていました。

質問: 部分文字列関数の startIndex として位置 (数値) を指定できるように、ファイル内の位置を見つけるにはどうすればよいですか?

回答: Notepad ++でテキスト ファイルを開く と、ファイル内のカーソル位置の列番号と行数が表示され、この作業が容易になることがわかりました。

于 2013-02-13T21:39:47.193 に答える
0

私はIndexOf()/IndexOfAny()と一緒に言うでしょうSubstring()。または、正規表現. ファイルが XML のような構造を持っている場合、この.

于 2013-01-18T00:24:37.437 に答える
0

indexOf() を使用してから、Length() を 2 番目の部分文字列パラメーターとして使用できます。

substr = str.substring(str.IndexOf("."), str.Length - str.IndexOf("."));
于 2013-01-18T03:44:59.987 に答える
0

ファイルがカンマなどで区切られている場合は、string.Split を使用できます。

データが次の場合: string[] text = { "1, リンゴ", "2, オレンジ", "3, レモン" };

    private void button1_Click(object sender, EventArgs e)
    {
        string[] lines = this.textBoxIn.Lines;
        List<Fruit> fields = new List<Fruit>();
        foreach(string s in lines)
        {
            char[] delim = {','}; 
            string[] fruitData = s.Split(delim);
            Fruit f = new Fruit();
            int tmpid = 0;
            Int32.TryParse(fruitData[0], out tmpid);
            f.id = tmpid;
            f.name = fruitData[1];
            fields.Add(f);
        }
        this.textBoxOut.Clear();
        string text=string.Empty;
        foreach(Fruit item in fields)
        {
            text += item.ToString() + " \n";
        }
        this.textBoxOut.Text = text;
    }
}
于 2013-01-18T01:03:03.493 に答える