- - PR -
string#IndexOfメソッドの動作に関して
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2004-12-28 10:12
こんにちは、こんどると申します。
C#のStringクラスのIndexOfメソッドに関する質問です。 文字列中に改行コード"\\r\\n"が含まれているかを判定したいのですが 文字列が以下の"str1"のようなものだと正常に"true"と判定されるのですが "str2"のパターンだと"false"と判定されてしまいます。 改行コード直後に「゛」文字があるのが原因だと思うのですが 理由及び解決方法が思いつきません。 どなたか同じような問題に当たった方や、解決方法を思いつく方いらっしゃいましたら ご教授お願いします。 string str1 = @"abc xyz"; string str2 = @"abc ゛xyz"; if(str1.IndexOf("\\r\\n") >= 0) { MessageBox.Show("true");// str1の場合こちらに入ります } else { MessageBox.Show("false");// str2の場合こちらに入ります } |
|
投稿日時: 2004-12-28 10:25
こんどるです。 理由は依然わかりませんがとりあえず解決方法として IndexOfのかわりに以下のように1文字ずつチェックするようにしてみました。 以外にもパフォーマンスもIndexOfの倍以上でていい感じではありますが やはり原因などを知りたいので引き続き宜しくお願いします。 private bool check(string str) { bool isResult = false; if(str != null) { bool isCr = false; for(int i = 0; i < str.Length; i++) { if(str[i] == '\r') { isCr = true; } else if(isCr && str[i] == '\n') { isResult = true; break; } else { isCr = false; } } } return isResult; } |
1