大文字と小文字を区別しないEndsWith
メソッド呼び出しを使用して、文字列がトリミングする文字で終わっているかどうか、および文字列の末尾からトリミング文字列の文字数を削除しているかどうかを判断します。
メソッドでは、次のようになります。
private string MyTrimEnd(string s, string trimString) {
if (s.EndsWith(trimString, StringComparison.OrdinalIgnoreCase)) {
// A case-insenstive check shows the string ends with the trimString so remove from the
// end of the string the number of characters in the trimString.
// Trim the result to leave no trailing space characters, if required.
return s.Remove(s.Length - trimString.Length).Trim();
} else {
// The check showed the passed string does not end with the trimString so just return the
// passed string.
return s;
}
}
テストと結果:
Console.WriteLine("'{0}'", MyTrimEnd(text1, "where")); // 'My hosue where sun shines'
Console.WriteLine("'{0}'", MyTrimEnd(text2, "where")); // 'My'
Console.WriteLine("'{0}'", MyTrimEnd(text3, "where")); // 'My where I'
Console.WriteLine("'{0}'", MyTrimEnd("WHERE", "where")); // ''
Console.WriteLine("'{0}'", MyTrimEnd("WHE", "where")); // 'WHE'
Console.WriteLine("'{0}'", MyTrimEnd("blablaWHERE", "where")); //'blabla'
Console.WriteLine("'{0}'", MyTrimEnd(string.Empty, "where")); //''
Console.WriteLine("'{0}'", MyTrimEnd("WHEREwherE", "where")); //'WHERE'
または拡張メソッドとして:
public static string MyTrimEnd(this string s, string trimString) {
if (s.EndsWith(trimString, StringComparison.OrdinalIgnoreCase)) {
return s.Remove(s.Length - trimString.Length).Trim();
} else {
return s;
}
}