工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Industrial programming >> C言語

C#の文字列操作:Stringクラスのプロパティ・メソッド・ベストプラクティス

C#では文字列を文字の配列として使用できますが、より一般的な方法はstringキーワードを使用して文字列変数を宣言することです。stringキーワードはSystem.Stringクラスのエイリアスです。

Stringオブジェクトの作成方法

Stringオブジェクトは以下の方法で作成できます。

作成例

using System;
namespace StringApplication {
    class Program {
        static void Main(string[] args) {
            // 文字列リテラルと連結
            string fname = "Rowan";
            string lname = "Atkinson";
            char[] letters = { 'H', 'e', 'l', 'l', 'o' };
            string[] sarray = { "Hello", "From", "Tutorials", "Point" };
            
            string fullname = fname + lname;
            Console.WriteLine("Full Name: {0}", fullname);
            
            // Stringコンストラクタ使用
            string greetings = new string(letters);
            Console.WriteLine("Greetings: {0}", greetings);
            
            // メソッドで文字列取得
            string message = String.Join(" ", sarray);
            Console.WriteLine("Message: {0}", message);
            
            // 書式設定メソッド
            DateTime waiting = new DateTime(2012, 10, 10, 17, 58, 1);
            string chat = String.Format("Message sent at {0:t} on {0:D}", waiting);
            Console.WriteLine("Message: {0}", chat);
        }
    }
}

実行結果:

Full Name: RowanAtkinson
Greetings: Hello
Message: Hello From Tutorials Point
Message: Message sent at 5:58 PM on Wednesday, October 10, 2012

Stringクラスのプロパティ

No.プロパティと説明
1Chars
現在のStringオブジェクトの指定位置にあるCharオブジェクトを取得
2Length
現在のStringオブジェクトの文字数を取得

Stringクラスの主要メソッド

Stringクラスには文字列操作に役立つ多数のメソッドがあります。よく使用されるものを以下に示します。

No.メソッドと説明
1Compare(strA, strB) - 2つの文字列を比較し、ソート順での相対位置を示す整数を返す
2Compare(strA, strB, ignoreCase) - 大文字小文字を無視して比較(ignoreCase=trueの場合)
3Concat(str0, str1) - 2つの文字列を連結
4Concat(str0, str1, str2) - 3つの文字列を連結
5Contains(value) - 指定文字列が含まれるか判定
6Copy(str) - 指定文字列と同じ値を持つ新しいStringオブジェクトを作成
7CopyTo(sourceIndex, dest, destIndex, count) - 指定位置から文字を配列にコピー
8EndsWith(value) - 指定文字列で終わるか判定
9Equals(value) - 現在の文字列と指定文字列が同じ値か判定
10Equals(a, b) - 2つの指定文字列が同じ値か判定(静的)
11Format(format, arg0) - 書式項目をオブジェクトの文字列表現で置換
12IndexOf(value) - 指定文字/文字列の最初の出現位置(0ベース)を返す
13IndexOf(value, startIndex) - 指定位置から検索開始
14IndexOfAny(anyOf) - 指定文字配列のいずれかが最初に出現する位置
15Insert(startIndex, value) - 指定位置に文字列を挿入した新しい文字列を返す
16IsNullOrEmpty(value) - nullまたは空文字列か判定(静的)
17Join(separator, values) - 区切り文字で文字列配列を連結(静的)
18LastIndexOf(value) - 最後の出現位置を返す
19Remove(startIndex) - 指定位置以降を削除
20Remove(startIndex, count) - 指定位置から指定文字数を削除
21Replace(oldChar, newChar) - 文字を置換
22Replace(oldValue, newValue) - 文字列を置換
23Split(separator) - 区切り文字で分割して文字列配列を返す
24StartsWith(value) - 指定文字列で始まるか判定
25ToCharArray() - Unicode文字配列として取得
26ToLower() - 小文字に変換
27ToUpper() - 大文字に変換
28Trim() - 前後の空白文字を削除
29Substring(startIndex) - 指定位置から末尾までの部分文字列を取得
30Substring(startIndex, length) - 指定位置から指定長さの部分文字列を取得

実用的な使用例

文字列比較

string str1 = "This is test";
string str2 = "This is text";

if (String.Compare(str1, str2) == 0) {
    Console.WriteLine("等しい");
} else {
    Console.WriteLine("等しくない");  // こちらが実行
}

部分文字列の含有チェック

string str = "This is test";
if (str.Contains("test")) {
    Console.WriteLine("'test' が見つかりました");
}

部分文字列の取得

string str = "Last night I dreamt of San Pedro";
string substr = str.Substring(23);  // "San Pedro"
Console.WriteLine(substr);

文字列の結合

string[] lines = {
    "Down the way nights are dark",
    "And the sun shines daily on the mountain top",
    "I took a trip on a sailing ship"
};
string joined = String.Join("\n", lines);
Console.WriteLine(joined);

文字列の不変性と StringBuilder

重要:C#のstringは不変(immutable)です。文字列を変更する操作(連結、置換、削除など)は、毎回新しい文字列オブジェクトを作成します。

大量の文字列操作を行う場合は、System.Text.StringBuilderを使用するとパフォーマンスが大幅に向上します。

using System.Text;

StringBuilder sb = new StringBuilder();
for (int i = 0; i < 1000; i++) {
    sb.Append(i).Append(", ");
}
string result = sb.ToString();

文字列補間(C# 6.0以降)

String.Formatより読みやすい文字列補間を使用できます。

string name = "太郎";
int age = 25;
string message = $"名前: {name}, 年齢: {age}歳";  // "名前: 太郎, 年齢: 25歳"

// 書式指定も可能
double price = 1234.5;
string formatted = $"価格: {price:C}";  // "価格: ¥1,235"(カルチャ依存)

ベストプラクティス

C言語

  1. C# クラスとオブジェクト:堅牢な OOP の基礎
  2. C# 文字列をマスターする:基礎、操作、高度なテクニック
  3. C++文字列関数をマスター:strcpy、strcat、strlen、strcmpの実践例
  4. C 言語の文字列をマスター: 宣言、入力、出力、ライブラリ関数
  5. Python文字列操作マスター:replace、join、split、reverse、大文字小文字変換
  6. Java文字列をマスター:生成、メソッド、ベストプラクティス
  7. Javaシングルトンパターン完全解説:安全な実装と活用法
  8. Java Enumの文字列表現マスター:デフォルト、オーバーライド、高度なパターン
  9. Java Stringクラス完全ガイド:生成、操作、主要メソッド46選
  10. Javaオブジェクト直列化: オブジェクトの持続化と復元(Serializable/transient/ObjectOutputStream)
  11. Java 8概要:関数型、ストリーム、日時APIなどの新機能