![]() |
|||||||||||||||||||||||||||||||||||
(1)文字列の長さ 文字列の最後はナル文字です。 ですから,ナル文字を検索することで 文字列の長さを求めることができます。 private int str_len(char[] ch) { int i=0; while(ch[i] != '\0') i++; return i; } 文字列を格納するための配列のサイズと 文字列の長さは必ずしも一致しません。 配列の大きさと文字列の長さの違いを 以下のプログラムで確認してみましょう。 private void button3_Click(object sender, System.EventArgs e) { char[] CH =new char[12]; CH[0]='文';CH[1]='字';CH[2]='列'; CH[3]='s' ;CH[4]='t' ;CH[5]='r' ; CH[6]='i'; CH[7]='n' ;CH[8]='g';CH[9]='\0'; MessageBox.Show(CH.Length.ToString()); // 配列のサイズ=12 MessageBox.Show(str_len(CH).ToString()); // 文字列の長さ=9 MessageBox.Show(CharToString(CH).Length.ToString()); // 文字列の長さ=9 } なお,C++,C で文字列の長さを求めるには,strlen関数を用います。
(2)文字列からの文字の探索 文字列から任意の文字を探索する手続きは次のようになります。 private int 文字探索(string X, char C) { int i=0; while (i < X.Length && X[i] !=C)i++; if(i < X.Length) return i; return -1; } ただし,C#には,CやC++のstrchr,strrchrに相当する 以下のメソッドが用意されています。 (a) String.IndexOf 特定の文字が文字列内で最初に出現する位置を返却します。 先頭は0,指定した文字が見つからない場合,−1を返します。 大文字と小文字は区別されます。 [例]以下の例では8と表示されます。 string S = ”Peter Piper picked a peck"; MessageBox.Show(S.IndexOf(’p')); (b)String.LastIndexOf 指定した文字列が文字列内で最後に出現する位置を返却します。 先頭は0,指定した文字が見つからない場合,-1を返します。 大文字と小文字は区別されます。 [例]以下の例では,21と表示されます。 string S = ”Peter Piper picked a peck"; MessageBox.Show(S.LastIndexOf(’p'));
(3)文字列の比較 文字列S1,S2を比較し,S1が大きければ正の整数値, 小さければ負の整数値,等しければ0を返却する関数は 例えば,次のように記述することができます。 private int str_cmp(string S1, string S2) { int i=0; while(i<S1.Length && i<S2.Length && S1[i]==S2[i]) i++; if (i== S1.Length && i== S2.Length) return 0; else if(I < S1.Length && I < S2.Length) return((int)S1[i]-(int)S2[i]); else if(i<S1.Length) return 1; else return -1; } private void button5_Click (object sender, System.EventArgs e) { string S1 = textBox1.Text; string S2 = textBox2.Text; MessageBox.Show(str_cmp(S1,S2).ToString()); } 文字列比較のメソッドもC#で用意されていますので, 通常は,わざわざプログラムを作る必要はありません。 たとえば,String.Compare メソッドでは, 2 つの文字列を比較します。 このメソッドでは,以下の結果を返却します。 (a) 引数1が引数2より大きいとき,正の整数 (b) 引数1が引数2より小さいとき,負の整数 (c) 引数1と引数2が等しいとき0 この他,CompareOrdinal ,CompareTo,Equals,StartsWith, EndsWith などがあります。 詳しくはC#のマニュアルやヘルプを参照してください。
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() 上のタイトルをクリックします |
|||||||||||||||||||||||||||||||||||