.NET Standard 2.1/.NET Core 2.0以降において、StartsWithおよびEndsWithメソッドは、IndexOf・LastIndexOfメソッドと同様にchar
を引数にとるバージョンが用意されているため、文字単位で一致を調べることができます。 Containsメソッドも同様に、.NET Standard 2.1/.NET Core 2.1以降でchar
を引数にとるバージョンが用意されています。
String.StartsWith・EndsWithメソッドで指定した文字で始まるか・終わるかを調べる .NET Standard 2.1/.NET Core 2.0
using System;
class Sample {
static void Main()
{
var s = "The quick brown fox jumps over the lazy dog";
// .NET Standard 2.1/.NET Core 2.0以降では、StartsWith/EndsWithメソッドにcharも指定できる
Console.WriteLine(s.StartsWith('T')); // 文字列が'T'で始まるか
Console.WriteLine(s.StartsWith('l')); // 文字列が'l'で始まるか
Console.WriteLine(s.EndsWith('g')); // 文字列が'g'で終わるか
Console.WriteLine(s.EndsWith('t')); // 文字列が't'で終わるか
}
}
実行結果
True False True False
Contains・StartsWith・EndsWithの各メソッドでは、char
を引数にとるオーバーロードでも文字列比較時の動作をStringComparisonで指定することができます。 文字列比較時のオプションStringComparisonについては文字列と比較オプション・カルチャの並べ替え規則 §.StringComparison列挙型とStringComparerクラスで詳しく説明しています。
それ以外のバージョンでは、Contains・StartsWith・EndsWithの各メソッドにchar
を引数にとるバージョンが用意されていないので、文字単位での一致を調べることはできません。 文字列が指定された文字で始まる/終わる/含むかどうかを調べるには、IndexOf・LastIndexOfメソッドを使う必要があります。
次の例は、IndexOf・LastIndexOfメソッドを使って、char
を引数にとるContains・StartsWith・EndsWithメソッドを実装したものです。
charを引数にとるContains・StartsWith・EndsWithメソッド
using System;
class Sample {
// 文字列sが指定された文字cを含むかどうか調べるメソッド
static bool Contains(string s, char c)
{
return s.IndexOf(c) != -1;
}
// 文字列sが指定された文字cで始まるかどうか調べるメソッド
static bool StartsWith(string s, char c)
{
return s.IndexOf(c) == 0;
// もしくは単純に
// return s[0] == c;
}
// 文字列sが指定された文字cで終わるかどうか調べるメソッド
static bool EndsWith(string s, char c)
{
return s.LastIndexOf(c) == s.Length - 1;
// もしくは単純に
// return s[s.Length - 1] == c;
}
static void Main()
{
var s = "The quick brown fox jumps over the lazy dog";
Console.WriteLine(Contains(s, 'f')); // 文字列が'f'を含むか
Console.WriteLine(Contains(s, 'A')); // 文字列が'A'を含むか
Console.WriteLine(StartsWith(s, 'T')); // 文字列が'T'で始まるか
Console.WriteLine(StartsWith(s, 'l')); // 文字列が'l'で始まるか
Console.WriteLine(EndsWith(s, 'g')); // 文字列が'g'で終わるか
Console.WriteLine(EndsWith(s, 't')); // 文字列が't'で終わるか
}
}
charを引数にとるContains・StartsWith・EndsWithメソッド
Imports System
Class Sample
' 文字列sが指定された文字cを含むかどうか調べるメソッド
Shared Function Contains(ByVal s As String, ByVal c As Char) As Boolean
Return s.IndexOf(c) <> -1
End Function
' 文字列sが指定された文字cで始まるかどうか調べるメソッド
Shared Function StartsWith(ByVal s As String, ByVal c As Char) As Boolean
Return s.IndexOf(c) = 0
' もしくは単純に
' Return s(0) = c
End Function
' 文字列sが指定された文字cで終わるかどうか調べるメソッド
Shared Function EndsWith(ByVal s As String, ByVal c As Char) As Boolean
Return s.LastIndexOf(c) = s.Length - 1
' もしくは単純に
' Return s(s.Length - 1) = c
End Function
Shared Sub Main()
Dim s As String = "The quick brown fox jumps over the lazy dog"
Console.WriteLine(Contains(s, "f"c)) ' 文字列が'f'を含むか
Console.WriteLine(Contains(s, "A"c)) ' 文字列が'A'を含むか
Console.WriteLine(StartsWith(s, "T"c)) ' 文字列が'T'で始まるか
Console.WriteLine(StartsWith(s, "l"c)) ' 文字列が'l'で始まるか
Console.WriteLine(EndsWith(s, "g"c)) ' 文字列が'g'で終わるか
Console.WriteLine(EndsWith(s, "t"c)) ' 文字列が't'で終わるか
End Sub
End Class
実行結果
True False True False True False