   
(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#のマニュアルやヘルプを参照してください。
   
1. 基本的なアルゴリズム
2. 基本的なデータ構造
3. 操作を伴うデータ構造
4. 探索
5. 再帰的アルゴリズム
6. ソート
7. 集合
8. 文字列処理
9. 色々なアルゴリズム

上のタイトルをクリックします
|