私は次のことを試しました:
var Title = LongTitle.Substring(0,20)
これは機能しますが、LongTitle の長さが 20 未満の場合は機能しません。文字列を最大 20 文字に制限し、たとえば 5 文字の長さの場合にエラーが発生しないようにするにはどうすればよいですか?
私は次のことを試しました:
var Title = LongTitle.Substring(0,20)
これは機能しますが、LongTitle の長さが 20 未満の場合は機能しません。文字列を最大 20 文字に制限し、たとえば 5 文字の長さの場合にエラーが発生しないようにするにはどうすればよいですか?
長さが超えないことを確認してくださいLongTitle
(null
チェックはスキップされました):
int maxLength = Math.Min(LongTitle.Length, 20);
string title = LongTitle.Substring(0, maxLength);
これは拡張メソッドに変換できます。
public static class StringExtensions
{
/// <summary>
/// Truncates string so that it is no longer than the specified number of characters.
/// </summary>
/// <param name="str">String to truncate.</param>
/// <param name="length">Maximum string length.</param>
/// <returns>Original string or a truncated one if the original was too long.</returns>
public static string Truncate(this string str, int length)
{
if(length < 0)
{
throw new ArgumentOutOfRangeException(nameof(length), "Length must be >= 0");
}
if (str == null)
{
return null;
}
int maxLength = Math.Min(str.Length, length);
return str.Substring(0, maxLength);
}
}
次のように使用できます。
string title = LongTitle.Truncate(20);
最短、:
var title = longTitle.Substring(0, Math.Min(20, longTitle.Length))
string title = new string(LongTitle.Take(20).ToArray());
文字列の長さが 20 より大きい場合は 20 を使用し、それ以外の場合は長さを使用します。
string title = LongTitle.Substring(0,
(LongTitle.Length > 20 ? 20 : LongTitle.Length));
StringLength 属性を使用できます。そうすれば、指定された長さよりも長い (または短い) 文字列を格納することはできません。
[StringLength(20, ErrorMessage = "Your Message")]
public string LongTitle;