文字列の検索と置換

tekitouabcna moabcjiretu
abc: 7
xyz: -1
tekitouxyzna moxyzjiretu

string(文字列)の検索と置き換えです。

前田稔(Maeda Minoru)の超初心者のプログラム入門

プログラムの説明

  1. string で適当な文字列を定義します。
    定義した文字列から "abc" を検索して、その位置を表示します。
    次に "xyz" を検索して、その位置を表示します。
    見つからないときは -1 がリターンされます。
    /**********************************/
    /*★ String Search      前田 稔 ★*/
    /**********************************/
    using System;
    
    class Text
    {
        public static void Main()
        {
            string str= "tekitouabcna moabcjiretu";
            Console.WriteLine(str);
            int i = str.IndexOf("abc");         //"abc" を検索
            Console.WriteLine("abc: {0}", i);
            int j = str.IndexOf("xyz");         //"xyz" を検索
            Console.WriteLine("xyz: {0}", j);
        }
    }
    
  2. 文字列検索の実行結果です。
    全角文字(漢字など)も1でカウントされることに注意して下さい。
    見つからないときは-1になります。
    tekitouabcna moabcjiretu
    abc: 7
    xyz: -1
    
  3. 文字列 str の "abc" を "xyz" に置き換えてみましょう。
    /**********************************/
    /*★ String Replace     前田 稔 ★*/
    /**********************************/
    using System;
    
    class Text
    {
        public static void Main()
        {
            string str= "tekitouabcna moabcjiretu";
    
            string wk = str.Replace("abc", "xyz");  //"abc"⇒"xyz" 置換
            Console.WriteLine(wk);
        }
    }
    
  4. 文字列置き換えの実行結果です。
    二か所あった "abc" が "xyz" に置き換わっています。
    tekitouxyzna moxyzjiretu
  5. 今度は文字列 str の "red" を "purple" に置き換えてみましょう。
    文字列の長さが違っても同じ要領です。
            string str= "red black white red  blue gray yellow";
            string wk = str.Replace("red", "purple");  //"red"⇒"purple" 置換
    
    実行の結果です。
    purple black white purple  blue gray yellow
    
  6. 文字列の削除です。
    5文字目から3文字を削除して表示します。
        string str= "red black white red  blue gray yellow";
        string wk = str.Remove(5, 3);  //"lac" 削除
        Console.WriteLine(wk);
    
    次に先頭から8文字と "green" と15文字目以降を結合して表示します。
        wk = str.Substring(0, 8) + "green" + str.Substring(15);
        Console.WriteLine(wk); 
    
    実行の結果です。
    red bk white red  blue gray yellow
    red blacgreen red  blue gray yellow
    
  7. STL の string を使うプログラムは STL で文字列の検索 を参照して下さい。
    char 配列を使うプログラムは 文字列の検索 を参照して下さい。
    Program Guid でストリング関係のページを抜粋しています。
    リンクがエラーになるときは「前田稔の超初心者のプログラム入門」から辿って下さい。

【NOTE】

  1. 最後に見つかった位置を取得するときは IndexOf() に代えて、LastIndexOf() を使います。
        int i = str.LastIndexOf("abc");
    
  2. 文字を検索するときは、引数に文字を指定します。
        int i = str.IndexOf('a');
    
  3. 大文字/小文字を区別しないで検索することも出来ます。
        int i = str.IndexOf("ABC", StringComparison.OrdinalIgnoreCase);
    
  4. 検索を開始する Index を指定することもできます。
    i の値は文字列 str の先頭からの位置が格納されます。
        int i = str.IndexOf("abc", 10);
    
  5. 検索範囲を指定することもできます。
    6文字後から10文字を検索します。
        int i = str.IndexOf("abc", 6, 10);
    
  6. 部分文字列の取り出しは Substring() メソッドが使えます。
        string str = "0123456789abcdefg";
        Console.WriteLine(str.Substring(8));    //8文字目から後
        Console.WriteLine(str.Substring(10,5)); //10文字目から5文字
    
  7. インデクサを使って、添え字で特定の文字を参照することができます。
        string str = "0123456789abcdefg";
        char   ch;
        ch = str[7];
    
  8. 改行コードが邪魔になるときは取り除きます。
        str = str.Replace("\r", "");
        str = str.Replace("\n", "");
    

[Next Chapter ↓]文字列の反転

超初心者のプログラム入門(C# Frame Work)