次の方法で共有


.NET の大文字と小文字の変更

ユーザーからの入力を受け入れるアプリケーションを作成する場合、データの入力に使用するケース (大文字または小文字) を決して確認できません。 多くの場合、特にユーザー インターフェイスにそれを表示する場合には、文字列に一貫性のあるケースを使用することが求められます。 次の表では、3 つのケースを変更する方法について説明します。 最初の 2 つのメソッドは、カルチャを受け入れるオーバーロードを提供します。

メソッド名 使用
String.ToUpper 文字列内のすべての文字を大文字に変換します。
String.ToLower 文字列内のすべての文字を小文字に変換します。
TextInfo.ToTitleCase 文字列をタイトル ケースに変換します。

警告

String.ToUpperメソッドとString.ToLower メソッドを使用して、文字列を比較したり、等しいかどうかをテストしたりするために、文字列を変換しないでください。 詳細については、「 大文字と小文字が混在する文字列の比較 」セクションを参照してください。

大文字と小文字が混在する文字列を比較する

大文字と小文字が混在する文字列を比較して順序を判断するには、comparisonType パラメーターを使用して String.CompareTo メソッドのいずれかのオーバーロードを呼び出し、comparisonType引数にStringComparison.CurrentCultureIgnoreCaseStringComparison.InvariantCultureIgnoreCase、またはStringComparison.OrdinalIgnoreCaseのいずれかの値を指定します。 現在のカルチャ以外の特定のカルチャを使用した比較では、cultureパラメーターと options パラメーターの両方を使用して String.CompareTo メソッドのオーバーロードを呼び出し、options引数として CompareOptions.IgnoreCase の値を指定します。

大文字と小文字が混在する文字列を比較して等しいかどうかを判断するには、comparisonType パラメーターを使用して String.Equals メソッドのいずれかのオーバーロードを呼び出し、comparisonType引数にStringComparison.CurrentCultureIgnoreCaseStringComparison.InvariantCultureIgnoreCase、またはStringComparison.OrdinalIgnoreCaseのいずれかの値を指定します。

詳細については、「 文字列を使用するためのベスト プラクティス」を参照してください。

ToUpper メソッド

String.ToUpperメソッドは、文字列内のすべての文字を大文字に変更します。 次の例では、文字列 "Hello World!" を大文字と小文字の混在から大文字に変換します。

string properString = "Hello World!";
Console.WriteLine(properString.ToUpper());
// This example displays the following output:
//       HELLO WORLD!
Dim MyString As String = "Hello World!"
Console.WriteLine(MyString.ToUpper())
' This example displays the following output:
'       HELLO WORLD!

前の例は、既定でカルチャに依存しています。これには、現在のカルチャのケース表記規則が適用されます。 カルチャに依存しない大文字と小文字を区別しない変更を実行したり、特定のカルチャの大文字と小文字の区別規則を適用したりするには、 String.ToUpper(CultureInfo) メソッドのオーバーロードを使用し、指定したカルチャを表す CultureInfo.InvariantCulture または System.Globalization.CultureInfo オブジェクトの値を culture パラメーターに指定します。 ToUpper メソッドを使用してカルチャに依存しない大文字と小文字を区別しない変更を実行する方法を示す例については、「カルチャに依存しない大文字と小文字の変更を実行する」を参照してください。

ToLower メソッド

String.ToLower メソッドは前のメソッドに似ていますが、代わりに文字列内のすべての文字を小文字に変換します。 次の例では、文字列 "Hello World!" を小文字に変換します。

string properString = "Hello World!";
Console.WriteLine(properString.ToLower());
// This example displays the following output:
//       hello world!
Dim MyString As String = "Hello World!"
Console.WriteLine(MyString.ToLower())
' This example displays the following output:
'       hello world!

前の例は、既定でカルチャに依存しています。これには、現在のカルチャのケース表記規則が適用されます。 カルチャに依存しない大文字と小文字を区別しない変更を実行したり、特定のカルチャの大文字と小文字の区別規則を適用したりするには、 String.ToLower(CultureInfo) メソッドのオーバーロードを使用し、指定したカルチャを表す CultureInfo.InvariantCulture または System.Globalization.CultureInfo オブジェクトの値を culture パラメーターに指定します。 ToLower(CultureInfo) メソッドを使用してカルチャに依存しない大文字と小文字を区別しない変更を実行する方法を示す例については、「カルチャに依存しない大文字と小文字の変更を実行する」を参照してください。

ToTitleCase メソッド

TextInfo.ToTitleCaseは、各単語の最初の文字を大文字に変換し、残りの文字を小文字に変換します。 ただし、完全に大文字の単語は頭字語と見なされ、変換されません。

TextInfo.ToTitleCase メソッドはカルチャに依存しています。つまり、特定のカルチャのケース表記規則を使用します。 メソッドを呼び出すためには、最初に特定のカルチャのケース表記規則を表す TextInfo オブジェクトを、特定のカルチャの CultureInfo.TextInfo プロパティから取得します。

次の例では、配列内の各文字列を TextInfo.ToTitleCase メソッドに渡します。 文字列には、適切なタイトル文字列と頭字語が含まれます。 文字列は、英語 (米国) カルチャのケース表記規則を使用して、タイトル ケースに変換されます。

using System;
using System.Globalization;

public class Example
{
   public static void Main()
   {
      string[] values = { "a tale of two cities", "gROWL to the rescue",
                          "inside the US government", "sports and MLB baseball",
                          "The Return of Sherlock Holmes", "UNICEF and children"};

      TextInfo ti = CultureInfo.CurrentCulture.TextInfo;
      foreach (var value in values)
         Console.WriteLine($"{value} --> {ti.ToTitleCase(value)}");
   }
}
// The example displays the following output:
//    a tale of two cities --> A Tale Of Two Cities
//    gROWL to the rescue --> Growl To The Rescue
//    inside the US government --> Inside The US Government
//    sports and MLB baseball --> Sports And MLB Baseball
//    The Return of Sherlock Holmes --> The Return Of Sherlock Holmes
//    UNICEF and children --> UNICEF And Children
Imports System.Globalization

Module Example
    Public Sub Main()
        Dim values() As String = {"a tale of two cities", "gROWL to the rescue",
                                   "inside the US government", "sports and MLB baseball",
                                   "The Return of Sherlock Holmes", "UNICEF and children"}

        Dim ti As TextInfo = CultureInfo.CurrentCulture.TextInfo
        For Each value In values
            Console.WriteLine("{0} --> {1}", value, ti.ToTitleCase(value))
        Next
    End Sub
End Module
' The example displays the following output:
'    a tale of two cities --> A Tale Of Two Cities
'    gROWL to the rescue --> Growl To The Rescue
'    inside the US government --> Inside The US Government
'    sports and MLB baseball --> Sports And MLB Baseball
'    The Return of Sherlock Holmes --> The Return Of Sherlock Holmes
'    UNICEF and children --> UNICEF And Children

カルチャに依存していても、TextInfo.ToTitleCase メソッドは言語的に正しい大文字小文字の規則を提供しないことに注意してください。 たとえば、前の例では、メソッドは "2 つの都市の物語" を "2 つの都市の物語" に変換します。 しかし、en-US 文化において言語的に正しいタイトルの書き方は「二つの都市の物語」です。

こちらもご覧ください