1

各行の日付形式をコンマからハイフンに変更しようとしています。月と日、日と年を区切るコンマのインデックスは異なります。

   lines_in_List[i] = lines_in_List[i].Insert(0, cnt + ","); // Insert Draw # in 1st column

   string one_line = lines_in_List[i];
   // 0,5,1,2012,1,10,19,16,6,36,,,
   // 1,11,5,2012,49,35,23,37,38,28,,,
   // 2,12,10,2012,8,52,53,54,47,15,,,
   //  ^-^--^ replace the ',' with a '-'.

   StringBuilder changed = new StringBuilder(one_line);
   changed[3] = '-';
   changed[5] = '-';
   changed[3] = '-';
   lines_in_List[i] = changed.ToString();
}
4

2 に答える 2

3

検索を開始するために初期オフセットを取るIndexOfのオーバーロードを使用できます。

http://msdn.microsoft.com/en-us/library/5xkyx09y.aspx

int idxFirstComma = line.IndexOf(',');
int idxSecondComma = line.IndexOf(',', idxFirstComma+1);
int idxThirdComma = line.IndexOf(',', idxSecondComma+1);

これらのインデックスを使用して、置換を行います。

(多くの一時的な文字列インスタンスを作成せずに)これらの文字を効率的に置き換えるには、次のことを確認してください。

http://www.dotnetperls.com/change-characters-string

そのスニペットは、文字列を文字配列に変換し、置換を行い、1つの新しい文字列を作成します。

于 2012-10-04T21:39:58.800 に答える
1

これを行うこともできます:

string modifiedLine = Regex.Replace(line, @"(^\d+,\d+),(\d+),(\d+)", @"$1-$2-$3")

また、行の先頭のスペースをトリミングする必要がある場合は、代わりにこれを使用してください。

string modifiedLine = Regex.Replace(line, @"^[ \t]*(\d+,\d+),(\d+),(\d+)", @"$1-$2-$3")

最後に、フォーマットされた日付だけを取得する場合は、次を使用します。

string justTheDate = Regex.Replace(line, @"^[ \t]*\d+,(\d+),(\d+),(\d+).*", @"$1-$2-$3")
于 2012-10-04T21:49:35.387 に答える