【C#】String文字列の使い方【replace/substring/Length】

C#,プログラミング言語

C# string型の使い方とメソッドについての解説

この記事では、String型の使い方とString型のメソッド(関数)について解説します。

String型は文字列を代入するときに利用され、ReplaceやSubString,Lengthなどのメソッドを実装することで文字列操作を行うことができます。

C#プログラミングで超使う型になりますので、気合を入れて覚えましょう!

本記事をご覧頂くと下記内容が理解できます。

この記事で学べること
C#のString型の使い方
Stringのメソッド(Replace,SubString,Length)の実装方法
String型でよく発生するエラー

筆者

疑問点や質問には何でも答えようと思っています。
この記事の不明点はこちらからお問い合わせ下さい

C#のおすすめ講座を受講して、最短1週間でC#をマスターしよう!
⇒C#が学べるおすすめプログラミングスクール&オンライン講座11選

①C#のString型とは?

String型文字列を格納するためのデータ型です。

「データ型」はデータの種類をそれぞれ分類したもので、データの用途を明確にするために用いられます。

string型は文字列を扱う「データ型」

String型は文字列データを扱う際に、宣言されます。

String型文字列の利用例としては
・画面上に文字列を表示する
・ファイルパスを格納する
・SQL文を格納する

などが挙げられます。

//①変数の宣言
String text,filePath,sql; //String型変数の宣言

text = "C#の初心者向け講座です。";
filePath = "C:\\Windows\\System";
sql = "SELECT * "
    + "FROM text "
    + "WHERE id = 1";

ざっくり、文章や文字を格納するときに利用する。
と覚えておくとよいと思います。

C#のStringメソッド(関数)とは?

この項ではメソッド(関数)とは何か?その種類と使い方について解説します。

メソッド(関数)とは何か?

メソッド(関数)とは、簡単に言うと、「そのデータ型で扱える便利な機能」になります。

例えば、

吾輩は猫である。名前はまだ無い。どこで生れたかとんと見当がつかぬ。何でも薄暗いじめじめした所でニャーニャー泣いていた事だけは記憶している。吾輩はここで始めて人間というものを見た。

吾輩は猫である

という文章。

この文章の「吾輩」の文字を「私」に変更したいなあ。
と言った場合には、Replace()メソッドを使えば簡単に文字列を置換することができます。

//①文字列の準備
String textCat; 
//文字列を代入する
textCat = "吾輩は猫である。名前はまだ無い。どこで生れたかとんと見当がつかぬ。何でも薄暗いじめじめした所でニャーニャー泣いていた事だけは記憶している。吾輩はここで始めて人間というものを見た。";
//Replaceメソッドを使用し、文字列を置換する
String textCatReplace = textCat.Replace("吾輩","私");

上記6行目「textCat.Replace(“吾輩","私")」のように

String型変数.Replace(“吾輩","私")

とメソッドを実行することで、吾輩が私に置換された文章が「textCatReplace」に代入されます。

String型のReplace()メソッドのイメージ

他にも

幸せな家族はどれもみな同じようにみえるが、不幸な家族にはそれぞれの不幸の形がある。

アンナ・カレーニナ

上記のような文章があったとして、
この文章の冒頭10文字だけ取り出したいなあ
と思ったらsubstring()メソッドを使用すれば冒頭10文字だけ抜き出すことができます。

//①文字列の準備
String textCat; 
//文字列を代入する
textCat = "幸せな家族はどれもみな同じようにみえるが、不幸な家族にはそれぞれの不幸の形がある。";
//Substringメソッドを使用し、冒頭10文字を取り出す
String textCatSubstring = textCat.Substring(0,10);

上記6行目のように
String型変数.Substring(開始位置(整数),切り取る文字数(整数));
とメソッドを実行することで、先頭から抜き取られた10文字が「textCatSubstring」に代入されます。

String型のsubstring()メソッドのイメージ
筆者

メソッド(関数)とは上記の例のように、データ型を操作するための便利機能です。

詳しくはマイクロソフトが運営する公式サイトをご覧ください。

③C#のString型のメソッドを用いたプログラムの実装

実際にString型の変数を用いたプログラムを書いて、String型文字列とメソッドの使い方を学んでいきましょう!

下記のプログラムを記載して、実際に実行してください。
※プロジェクトの作成方法はこちら(左記サイトの①プロジェクトの作成をご確認ください) 

visual studioの実行画面
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace LecturerBeginner
{
    class StringLecturer
    {
        static void Main(string[] args)
        {
            //①文字列の準備
            String textCat; 
            //文字列を代入する
            textCat = "吾輩は猫である。名前はまだ無い。どこで生れたかとんと見当がつかぬ。何でも薄暗いじめじめした所でニャーニャー泣いていた事だけは記憶している。吾輩はここで始めて人間というものを見た。";

            //②Replaceメソッドを使用し、文字列を置換する
            String textCatReplace = textCat.Replace("吾輩","私");
            Console.WriteLine("置換した結果は、\n" + textCatReplace);
            Console.WriteLine();
            //③Substringメソッドを使用し、冒頭10文字を取り出す
            String textCatSubstring = textCat.Substring(0,10);
            Console.WriteLine("冒頭10文字を取得すると、\n" + textCatSubstring);
            Console.WriteLine();
            //④Lengthメソッドを使用し、文字列の長さを取得する
            int textCatLength = textCat.Length;
            Console.WriteLine("文字列の長さは、" + textCatLength);
        }
    }
            
}

上記のプログラムを実行すると下記の結果が得られます。

実行方法
実行結果

※プログラムの実行方法はこちら(左記サイトの③プロジェクトの実行をご確認ください) 

④String文字列のプログラム解説

この項では上記プログラムの解説をしていきます。

C#String型文字列の準備

//①文字列の準備
String textCat; 
//文字列を代入する
textCat = "吾輩は猫である。名前はまだ無い。どこで生れたかとんと見当がつかぬ。何でも薄暗いじめじめした所でニャーニャー泣いていた事だけは記憶している。吾輩はここで始めて人間というものを見た。";

13行目から16行目では、String型文字列を使用するために「変数(textCat)」を宣言し文字を代入します。
今回は夏目漱石著『吾輩は猫である』の冒頭をString型文字列に代入しています。

C#String型Replace()メソッドを使用し、文字列を置換する

18行目から21行目では、Replace()メソッドを実装しています。
プログラムを実行すると下記画像のような結果が得られます。

//②Replaceメソッドを使用し、文字列を置換する
String textCatReplace = textCat.Replace("吾輩","私");
Console.WriteLine("置換した結果は、\n" + textCatReplace);
実行結果

メソッドを使用する時は、
変数名.〇〇(メソッド名)※一部例外あり
変数名の後に.(ドット)を記載しその後にメソッド名を記載してください。

textCat.Replace(“置換前の文字列" , “置換後の文字列");←文字列の間は,(カンマ)で区切りましょう。

Replace()のかっこ内に文字列を二つ記入します。
一つ目の文字列は「置換前の文字列」つまり変更したい文字列を記載します。
二つ目の文字列は「置換後の文字列」つまり変更した後の文字列を記載します。

結果の通りReplace()メソッドを実装すると、対象のString型変数の一部の文字列を置換することができます

C#String型のSubstringメソッドを使用し、冒頭10文字を取り出す

22行目から25行目では、Substring()メソッドを実装しています。

//③Substringメソッドを使用し、冒頭10文字を取り出す
String textCatSubstring = textCat.Substring(0,10);
Console.WriteLine("冒頭10文字を取得すると、\n" + textCatSubstring);
実行結果

Substring(抜き出す開始位置 ,抜き出す文字数);←文字列の間は,(カンマ)で区切りましょう。

Substring(〇,〇)のかっこ内に整数を2つ記載します。
一つ目の整数は「抜き出す開始位置」
※ここで注意。C#で順番を数えるときは「0」から始まります。
二つ目の整数は「抜き出す文字数」

結果の通りSubstring()メソッドを実装すると、対象のString型変数の文字列を抜き出すことができます

C#String型Lengthメソッドを使用し、文字列の長さを取得する

26行目から28行目では、Substring()メソッドを実装しています。

//④Lengthメソッドを使用し、文字列の長さを取得する
int textCatLength = textCat.Length;
Console.WriteLine("文字列の長さは、" + textCatLength);
実行結果

変数名.Length;

LengthメソッドはSubstring()Replace()と違い「()」が不要です。
このようなメソッドもありますのでしっかり覚えておきましょう。

筆者

Substring()やReplace()のメソッド()内に記載する値のことを「引数」と呼びます。Replace("吾輩","私")この"吾輩"と"私"が「引数」です。

String型のLengthメソッドのイメージ

また、Substring()やReplace()と違い、String型ではなくInt型でデータが返ってきます。

Lengthメソッドのように、メソッド実行前のデータ型と違う型で値が返ってくることがあります。
※返ってくる値(返却値)はメソッドを使う上で重要になります。

今回はメソッドを3つ紹介しましたが、実際にString型のメソッドは数多くあります。
下記から確認してみましょう。
https://learn.microsoft.com/ja-jp/dotnet/api/system.string?view=net-8.0

C#String型メソッドをちょっと応用

String型メソッドSubstring()の引数を1文字にしてみる

substring(10)のように引数1文字にすると、文字列の途中から最後まで抜き取ることができます。
実際に動作を確認しましょう。

//③Substringメソッドを使用し、冒頭10文字を取り出す
String textCatSubstring = textCat.Substring(10);
Console.WriteLine("冒頭10文字を取得すると、\n" + textCatSubstring);
先頭10文字が切り取られる。

上記実行結果を見ると、冒頭10文字の「吾輩は猫である。名前」の箇所が表示されていません。

このようにsubstring(10)と引数を一つにすると、その冒頭からその文字数分を削除した文章を得ることができます。
substring()のように、引数の数を変えると動作が変わるメソッドがあるため、注意する必要があります。

String型メソッドReplaceを用いて、指定した文字を切り取ろう

次に指定した文字だけを削除する方法をご紹介します。

Replace()メソッドを使用します。
Replace()を利用すれば「対象の文字列を別の文字列に置換できる」と紹介しました。

この置換の部分を応用すると「指定した文字だけを削除する」ことができます。実際に下記のプログラムを実行してみてください。

//③Substringメソッドを使用し、冒頭10文字を取り出す
String textCatSubstring = textCat.Replace("吾輩","")
Console.WriteLine("吾輩だけを削除すると、\n" + textCatSubstring);
実行結果

上記のように「吾輩」だけが削除された文章が出力されます。

このようにReplace(“削除したい文字列",“");と記入すると、
削除したい文字列が""(空文字)に置換されるため、あたかも削除されたような処理が行えます。

このやり方はとてもよく使うため、覚えておいて損はないです。

C#String型課題にチャレンジ

(1) 「吾輩は猫である。~ものを見た。」の文章を冒頭14文字目から、20文字だけ抜き出してみよう。

正解

(2) 「吾輩は猫である。~ものを見た。」の文章の「。」を「.(ドット)」に置き換えてみよう。

正解

以上で、String型の概要とメソッドについての説明は以上です。
お疲れさまでした。

筆者

C#プログラミング始めやすいように下記にC#を学ぶための完全ガイドを作成しています。
気軽にC#の勉強を始めてみてください!!

C#プログラミングを学んでみたい方向けの完全ガイドを下記に掲載します。
⇒C#初心者向けプログラミング完全ガイド

プログラミングで挫折しかけている方へ

おすすめのC#教材(補助教材として)

C#,プログラミング言語

Posted by 9noike