わかりました、私は/他がうまくいくかどうか知っています、私は代わりが必要でした。
使っています
B = String.Concat(A.Substring(0, 40));
値の最初の40文字をキャプチャします。
A
の値が40
より大きい場合、B
はキャプチャできますが、A
の値が40
より小さい場合、 B
でキャプチャされている値はありません。
String.Concatで単一の文字列のみを渡す目的を理解していません。あなたの目的は次の方法で解決できます:
if(A.Length > 40)
B= A.Substring(0,40);
else
B=A;
素早く汚い:
A.Length > 40 ? A.Substring(0, 40) : A
それの拡張を作成しないでください... TruncateやLeftなどと呼んでください。
public static class MyExtensions
{
public static string Truncate(this string s, int length)
{
if(s.Length > length) return s.Substring(0, length);
return s;
}
}
次に、次のように呼び出すだけです。
string B = A.Truncate(40);
また、それはよりクリーンになりますが、拡張メソッドにする必要がないことにも注意してください。
StringToolクラスで:
public static string Truncate(string value, int length)
{
if(value.Length > length) return value.Substring(0, length);
return value;
}
そしてそれを呼び出すには:
string B = StringTool.Truncate(A, 40);
拡張機能はこのような問題に最適です;)鉱山には汚い名前がありますが、誰もがそれが何をするか知っています-これは例外安全な部分文字列です:
public static string SubstringNoLongerThanSource(this string source, int startIndex, int maxLength)
{
return source.Substring(startIndex, Math.Min(source.Length - startIndex, maxLength));
}
以下のコードを使用して部分文字列を作成します
B = String.padright(40).Substring(0, 40))
Microsoft.VisualBasic.Strings
の- Left を使用できます。
B = Microsoft.VisualBasic.Strings.Left(A, 40);
とにかく、なぜConcat
を使いたいのか分からない。
B = string.Concat(A.Substring(0, Math.Min(40, A.Length)));