1

「?」を使用して文字列を分割しようとしています。区切り文字として。私のコードは CSV ファイルからデータを読み取りますが、特定の記号 (分数など) が C# で認識されないため、それらを関連するデータ (この場合は債券クーポン) に置き換えようとしています。出力をテストするために、次のコード (インデックス変数 i のループに埋め込まれている) に print ステートメントがあります。

string[] l = lines[i][1].Split('?');               
//string[] l = Regex.Split(lines[i][1], @"\?");

System.Console.WriteLine("L IS " + l.Length.ToString() + " LONG");
for (int j = 0; j < l.Length; j++)
    System.Console.WriteLine("L["+ j.ToString() + "] IS " + l[j]);

if (l.Length > 1)
{
    double cpn = Convert.ToDouble(lines[i][12]);
    string couponFrac = (cpn - Math.Floor(cpn)).ToString().Remove(0,1);
    lines[i][1] = l[0].Remove(l[0].Length-1) + couponFrac + l[1]; // Recombine, replacing '?' with CPN
}

問題は、両方の分割メソッド (string.Split()およびRegex.Split()) が、行内の文字列要素の一部が正しく分割され、他の文字列要素がまったく分割されないという一貫性のない結果を生成することです (したがって、疑問符は文字列内に残っています)。

何かご意見は?分割方法に関する同様の投稿を見てきましたが、あまり役に立ちませんでした。

4

2 に答える 2

1

String.Split を使用しても問題はありませんでした。入力と出力を投稿できますか?おそらく String.Replace を使用して、目的の '?' を置き換えることができる場合。文字列に出現しない文字を使用し、その文字で String.Split を使用して、結果の文字列を分割して同じ効果を得ます。(ただ試してみてください)

于 2013-08-01T20:13:51.390 に答える