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

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

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

警告

String.ToUpperString.ToLower の方式を使用して、文字列を比較したり等しいかどうかをテストしたりする目的で、それらの文字列を変換するべきではありません。 詳細については、「大小混合文字の文字列を比較する」セクションを参照してください。

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

大小混合文字の文字列を比較してそれらの順序を判別するには、comparisonType パラメーターのある String.CompareTo メソッドのいずれかのオーバーロードを呼び出して、comparisonType 引数に StringComparison.CurrentCultureIgnoreCaseStringComparison.InvariantCultureIgnoreCase、または StringComparison.OrdinalIgnoreCase の値を指定します。 現在のカルチャ以外の特定のカルチャを使用して比較する場合、cultureoptions の両方のパラメーターのある 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) メソッドのオーバーロードを使用して、culture パラメーターに指定のカルチャを表す CultureInfo.InvariantCulture または System.Globalization.CultureInfo オブジェクトの値を提供します。 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) メソッドのオーバーロードを使用して、culture パラメーターに指定のカルチャを表す CultureInfo.InvariantCulture または System.Globalization.CultureInfo オブジェクトの値を提供します。 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("{0} --> {1}", 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 メソッドは言語的に正しい大文字小文字の規則を提供しないことに注意してください。 たとえば、前の例で、メソッドは "a tale of two cities" を "A Tale Of Two Cities" に変換します。 しかし、en-US カルチャで言語的に正しいタイトルの大文字小文字の表記は "A Tale of Two Cities" です。

関連項目