我很明顯錯過了這裏的東西..IndexOf C錯誤#
我正在寫一個函數,返回由特定字符串分隔的子字符串的數量。 這裏是相當簡單的功能 -
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'沒有被拾取,所以它不是一個字符轉換問題。
困惑......
感謝
試着給出變量的正確名稱。它會幫助你以及我們很多 – Sachin 2013-03-19 13:05:46
你可以在這裏發佈用於測試的實際代碼,這意味着調用該函數的代碼?最好通過逃避特殊字符,所以我們不必依賴網絡編碼來傳達正確的。 – 2013-03-19 13:07:13
字符串比較對於產生意想不到的結果有一個訣竅。始終明確要使用的比較規則。這裏可能應該是StringComparison.Ordinal。 – 2013-03-19 13:13:26