私は明らかにここに何かが欠けています..
特定の文字列で区切られた部分文字列の数を返す関数を書いています。これはかなり単純な機能です -
public static FuncError DCount(String v1, String v2, ref Int32 result) {
result = 0;
if (String.IsNullOrEmpty(v1)) {
return null;
}
if (String.IsNullOrEmpty(v2)) {
return null;
}
int ct = 1;
int ix = 0;
int nix = 0;
do {
nix = v1.IndexOf(v2, ix);
if (nix >= 0) {
ct++;
System.Diagnostics.Debug.Print(
string.Format("{0} found at {1} count={2} result = {3}",
v2, nix, ct, v1.Substring(nix,1)));
ix = nix + v2.Length;
}
} while (nix >= 0);
result = ct;
return null;
}
問題は、特定の状況で区切り文字として使用されている特殊文字で呼び出すと発生します。多くの誤検知を返しています。Debug.Print から、最初と最後の引数は常に同じでなければなりません。
þ found at 105 count=2 result = t
þ found at 136 count=3 result = t
þ found at 152 count=4 result = þ
þ found at 249 count=5 result = t
þ found at 265 count=6 result = t
þ found at 287 count=7 result = t
þ found at 317 count=8 result = t
þ found at 333 count=9 result = þ
þ found at 443 count=10 result = þ
þ found at 553 count=11 result = þ
þ found at 663 count=12 result = þ
þ found at 773 count=13 result = þ
þ found at 883 count=14 result = þ
þ found at 993 count=15 result = þ
þ を char として渡すと、正常に動作します。þ を区切り文字として使用して文字列を分割すると、正しい数の要素が返されます。誤って識別された 't' については、結果にピックアップされていない他の 't' があるため、文字変換の問題ではありません。
混乱している ...
ありがとう