【C#入門】Stringクラスで文字列操作総まとめ

Stringクラスって使ってますか?

文字列の分割・結合や比較、検索など文字列を扱う場合に使用すると便利です。この記事では、Stringクラスについて

  • Stringクラスとは
  • Stringとstringの違いについて
  • StringBuilderクラスとは
  • 文字列を分割・結合する方法
  • 文字列を比較する方法
  • 文字列が含まれているか判定する方法
  • Substringで文字列の一部分を取得する方法
  • 削除する方法
  • nullや空文字か判定する方法
  • Replaceで置換する方法
  • 変換する方法

など基本的な内容から、応用的な使い方の内容についても解説していきます。今回はStringクラスについて、使い方をわかりやすく解説します!

目次

Stringクラスとは

c#には文字列を扱うStringクラスが用意されています。文字列の分割・結合や比較、検索など文字列を扱うメソッドを使うことができます。この記事では主なメソッドの使い方についてまとめています。

Stringとstringの違いについて

c#では頭文字が大文字で始まるString小文字で始まるstringがあります。例えばStringクラスのメソッドを呼び出す場合は大文字で始まるStringを使います。文字列の変数を宣言する場合には小文字で始まるstringで型を指定します。

ただ、Stringクラスのメソッドを呼び出す場合に小文字で始まるstringを使っても問題ありません。文字列の変数を宣言する場合に大文字で始まるStringを使っても型を指定することもできます。これは小文字で始まるstringはStringクラスのエイリアス(別名)だからです。

StringBuilderクラスとは

c#にはStringBuilderクラスもあります。StringBuilderクラスを使うと、高速に文字列を追加、挿入したり削除、置換することができます。次のサンプルはStringBuilderクラスのAppendメソッドを使って末尾に文字列を追加する例です。

using System;
using System.Text;
 
namespace Sample
{
  class Sample
  {
    static void Main()
    {
      StringBuilder sb = new StringBuilder("侍");
      Console.WriteLine(sb.Append("エンジニア塾"));
      
      Console.ReadKey();
    }
  }
}

実行結果:

侍エンジニア塾

このサンプルコードでは、StringBuilderクラスのオブジェクトsbからAppendメソッドを呼び出し、文字列を結合しています。StringBuilderクラスには、Appendメソッド以外にもAppendFormat、Insert、Remove、Replaceメソッドなどが用意されています。

詳しくはこちらで詳しく解説していますので、ぜひ参考にしてください。

文字列を分割・結合する方法

文字列を分割・結合するにはStringクラスのSplitメソッドやJoinメソッドを使います。

Splitで分割する方法

文字列を分割するにはStringクラスのSplitメソッドを使います。文字列中に含まれるスペースで文字列を分割する方法についてみていきましょう。

using System;
 
namespace Sample
{
  class Sample
  {
    static void Main()
    {
      string str = "侍 エンジニア 塾";
      
      string[] arr =  str.Split(' ');
      Console.WriteLine("{0}", string.Join(", ", arr));
      
      Console.ReadKey();
    }
  }
}

実行結果:

侍, エンジニア, 塾

Splitメソッドではスペース以外にも、カンマや改行コード、指定文字列で文字列を分割することができます。詳しくはこちらで詳しく解説していますので、ぜひ参考にしてください。

Joinで文字列の配列要素を結合する方法

文字列の配列要素を結合するにはJoinメソッドを使います。Joinメソッドを使い方について、サンプルコードで確認しましょう。

using System;
using System.Linq;
 
namespace ArrayCopy
{
  class ArrayCopy
  {
    static void Main()
    {
      char[] src = {'a', 'b', 'c'};
      
      Console.WriteLine("{0}", string.Join("/", src));
      Console.ReadKey();
    }
  }
}

実行結果:

a/b/c

サンプルコードでは、Joinメソッドを使って、区切り文字列に”/”を指定して配列srcの要素を結合しています。配列要素の結合については、こちらで詳しく解説していますので、ぜひ参考にしてください。

文字列を比較する方法

文字列の比較には並び替え順位を比較する方法文字列同士が等しいか比較する方法の2種類があります。

Compareで並び替え順位を比較する方法

並び替え順位を比較する場合にはCompareメソッドを使います。Compareメソッドの使い方については、サンプルコードで確認しましょう。

using System;
 
namespace Sample
{
  class Sample
  {
    static void Main()
    {
      string strA = "Osaka";
      string strB = "Tokyo";
      string strC = "Nagoya";
      
      Console.WriteLine(string.Compare(strA, strB));
      Console.WriteLine(string.Compare(strA, strC));
      
      Console.ReadKey();
    }
  }
}

実行結果:

-1
1

このサンプルコードでは、まず文字列strAとstrBの並び順を比較しています。strA(Osaka)はstrB(Tokyo)の前ですので、負の値を返しています。

次に文字列strAとstrCの並び順を比較しています。strA(Osaka)はstrC(Nagoya)の後ろですので、正の値を返しています。Compareメソッドの使い方については、こちらで詳しく解説していますので、ぜひ参考にしてください。

Equalsで文字列同士が等しいか比較する方法

文字列同士が等しいか比較する場合にはEqualsを使います。Equalsメソッドの使い方についてもサンプルコードで確認しましょう。

using System;
 
namespace Sample
{
  class Sample
  {
    static void Main()
    {
      string strA = "ABCDE";
      string strB = "ABCDE";
      
      if(strA.Equals(strB)) {
        Console.WriteLine("strAとstrBは同じです");  
      } else {
        Console.WriteLine("strAとstrBは違います");
      }
      
      Console.ReadKey();
    }
  }
}

実行結果:

strAとstrBは同じです

CompareメソッドとEqualsメソッドの使い方については、こちらで詳しく解説しています。ぜひ参考にしてください。

==演算子で文字列が等しいかを比較する方法

==演算子で文字列を比較をするには、値の比較と同様に==演算子を使います。次のプログラムで確認してみましょう。

using System;

namespace Sample
{
    class Sample
    {
        static void Main()
        {
            string str1 = "Samurai";
            string str2 = "Samurai";

            if (str1 == str2)
            {
                Console.WriteLine("同じ文字列です");
            }
            else
            {
                Console.WriteLine("違う文字列です");
            }

            Console.ReadKey();
        }
    }
}

実行結果:

同じ文字列です

詳しくはこちらで詳しく解説していますので、ぜひ参考にしてください。

文字列が含まれているか判定する方法

指定の文字列が含まれているか判定するには、IndexOfメソッドやContainsメソッドを使う方法があります。

IndexOfで文字列の位置を検索する方法

IndexOfメソッドを使うと指定した文字、文字列の位置を取得することができます。サンプルコードで確認しましょう。

using System;
 
namespace Sample
{
  class Sample
  {
    static void Main()
    {
      string str = "Hello World!";
      string target = "l";
      
      int num = str.IndexOf(target) + 1;
      
      if(num > 0) {
        Console.WriteLine("{0}は{1}番目にあります", target, num);  
      } else {
        Console.WriteLine("{0}は見つかりませんでした", target);
      }
      
      Console.ReadKey();
    }
  }
}

実行結果:

lは3番目にあります

IndexOfメソッドの使い方については、こちらで詳しく解説していますので、ぜひ参考にしてください。

Containsで文字列が含まれているか判定する方法

Containsメソッドを使うと、文字列の中に指定した対象が含まれるか確認することができます。サンプルコードで確認しましょう。

using System;
namespace Sample
{
  class Sample
  {
    static void Main()
    {
      string str = "Hello World!";
      string target = "W";
      
      if(str.Contains(target)) {
        Console.WriteLine("{0}が見つかりました", target);  
      } else {
        Console.WriteLine("{0}は見つかりませんでした", target);
      }
      
      Console.ReadKey();
    }
  }
}

実行結果:

Wが見つかりました

Compareメソッドの使い方については、こちらで詳しく解説していますので、ぜひ参考にしてください。

StartsWith、EndsWithで文字列の始まりと終わりを判定

StartsWithメソッドとEndsWithメソッドは、引数に検索する文字列を指定します。次のプログラムで使い方を確認してみましょう。

using System;

namespace Sample
{
    class Sample
    {
        static void Main()
        {
            string str = "SamuraiEngineerJuku";

            if (str.StartsWith("Samurai"))
            {
                Console.WriteLine("前方一致しました");
            }
            else
            {
                Console.WriteLine("前方一致しませんでした");
            }

            if (str.EndsWith("Juku"))
            {
                Console.WriteLine("後方一致しました");
            }
            else
            {
                Console.WriteLine("後方一致しませんでした");
            }

            Console.ReadKey();
        }
    }
}

実行結果:

前方一致しました
後方一致しました

詳しくはこちらで詳しく解説していますので、ぜひ参考にしてください。

文字列の検索方法まとめ

「IndexOfメソッド」、「Containsメソッド」、「StartsWith、EndsWithメソッド」などを使った文字列の検索方法はこちらの記事でまとめて解説しているので、ぜひ参考にしてください。

Substringで文字列の一部分を取得する方法

Substringメソッドを使うと、文字列の一部分を取得することができます。

using System;
 
namespace Sample
{
  class Sample
  {
    static void Main()
    {
      string str = "侍エンジニア";
      Console.WriteLine(str.Substring(1, 5));
      
      Console.ReadKey();
    }
  }
}

実行結果:

エンジニア

このサンプルコードでは、Substringメソッドを使って開始位置と文字数を指定して、文字列strから部分文字列の一部分を抜き出しています。Substringメソッドの使い方については、こちらで詳しく解説していますので、ぜひ参考にしてください。

削除する方法

ここでは、文字列を削除する方法についていくつかご紹介します。

Trimで空白を削除する方法

Trimメソッドは、文字列の先頭と末尾に付いている空白文字や指定文字を削除するために使います。

using System;
 
namespace Sample
{
  class Sample
  {
    static void Main()
    {
      string str = "\t 侍エンジニア \r\n";
      
      Console.WriteLine(str.Trim());
      Console.ReadKey();
    }
  }
}

実行結果:

侍エンジニア

Trimメソッドの使い方については、こちらで詳しく解説していますので、ぜひ参考にしてください。

Removeで文字列を削除する方法

Removeメソッドを使うと文字列の一部を削除することができます。

using System;

namespace Sample
{
  class Sample
  {
    static void Main()
    {
      string str = "侍エンジニア塾";
      Console.WriteLine(str.Remove(1, 5));
      
      Console.ReadKey();
    }
  }
}

実行結果:

侍塾

このサンプルプログラムでは、Removeメソッドを使って文字列の一部を削除しています。Removeメソッドの第1引数で削除する文字列の先頭の位置をインデックス番号で指定しています。第2引数では削除する文字数を指定しています。

Removeメソッドの使い方については、こちらで詳しく解説していますので、ぜひ参考にしてください。

nullや空文字か判定する方法

c#には文字列がnullか空文字か判定する方法があります。

Emptyで空文字か判定する方法

Emptyフィールドを使うと、文字列が空文字か判定することができます。

using System;

namespace Sample
{
  class Sample
  {
    static void Main()
    {
      string str = "";
      
      if(str == String.Empty) {
        Console.WriteLine("strは空です");
      } else {
        Console.WriteLine("strは空ではありません");
      }
      
      Console.ReadKey();
    }
  }
}

実行結果:

strは空です

IsNullOrEmptyでnullか空文字か判定する方法

IsNullOrEmptyメソッドは、引数に指定した文字列がnullか空文字列の場合にTrueを返します。

using System;

namespace Sample
{
  class Sample
  {
    static void Main()
    {
      string str = null;
      
      if(String.IsNullOrEmpty(str)) {
        Console.WriteLine("strはnullです");
      } else {
        Console.WriteLine("strはnullではありません");
      }
      
      Console.ReadKey();
    }
  }
}

実行結果:

strはnullです

Replaceで置換する方法

Replaceメソッドは、文字列を検索して条件に一致する部分を置換するために使用します。

using System;
using System.Collections.Generic;

namespace Sample
{
    class Program
    {
        static void Main(string[] args)
        {
            string str1 = "apple, orange, melon, apple";
            string str2 = str1.Replace("apple", "banana");

            Console.WriteLine(str1);
            Console.WriteLine(str2);

            Console.ReadKey();
        }
    }
}

実行結果:

apple, orange, melon, apple
banana, orange, melon, banana

Replaceメソッドの使い方については、こちらで詳しく解説していますので、ぜひ参考にしてください。

変換する方法

文字列を数値やDateTime型に変更する方法や、逆に文字列に変更する方法も用意されています。

数値に変換する方法

文字列を数値に変換するには、Parseメソッドを使う方法とConvertクラスを使う方法があります。ここではParseメソッドを使う方法をご紹介します。

using System;
 
namespace Sample
{
  class Sample
  {
    static void Main()
    {
      // int型に変換
      int i = int.Parse("123");
      Console.WriteLine(i);
      
      // long型に変換
      long l = long.Parse("123");
      Console.WriteLine(l);
      
      // float型に変換
      float f = float.Parse("123.456");
      Console.WriteLine(f);
      
      // double型に変換
      double d = double.Parse("123.456");
      Console.WriteLine(d);
      
      Console.ReadKey();
    }
  }
}

実行結果:

123
123
123.456
123.456

このサンプルコードでは、int、long、float、doubleそれぞれの構造体からParseメソッドを呼び出し、それぞれの型に変換しています。

DateTimeに変換する方法

文字列をDateTime型に変換するには、DateTimeクラスのParseメソッドを使います。

using System;

namespace Sample
{
  class Sample
  {
    static void Main()
    {
      string str = "2018/03/01";
      DateTime dt = DateTime.Parse(str);
      Console.WriteLine(dt);
      
      Console.ReadKey();
    }
  }
}

実行結果:

03/01/2018 00:00:00

逆にDateTime型に変換する方法については、こちらで詳しく解説しています。ぜひ参考にしてください。

文字列に変換する方法

文字列に変換するには、ToStringメソッドを使います。ここでは数値を文字列に変換する方法をご紹介します。

using System;
 
namespace Sample
{
  class Sample
  {
    static void Main()
    {
      int num = 255;
      
      // int.ToStringメソッドを使う方法
      Console.WriteLine(num.ToString());
      
      Console.ReadKey();
    }
  }
}

実行結果:

255

文字列を数値に変換する方法、数値を文字列に変更する方法については、こちらで詳しく解説しています。ぜひ参考にしてください。

まとめ

ここでは、Stringクラスについて説明しました。文字列を操作する必要がある場合はたくさんあります。使いこなすことができるように、この記事を何度も参考にして下さいね!

この記事を書いた人

熊本在住のフリープログラマ兼ライターです。C/C++/C#、Java、Python、HTML/CSS、PHPを使ってプログラミングをしています。専門は画像処理で最近は機械学習、ディープラーニングにはまっています。幅広くやってきた経験を活かしてポイントをわかりやすくお伝えしようと思います。
お問合せはこちらでも受け付けています。
info@sss-lab.com

目次