「?」を使用して文字列を分割しようとしています。区切り文字として。私のコードは 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()
) が、行内の文字列要素の一部が正しく分割され、他の文字列要素がまったく分割されないという一貫性のない結果を生成することです (したがって、疑問符は文字列内に残っています)。
何かご意見は?分割方法に関する同様の投稿を見てきましたが、あまり役に立ちませんでした。