好的,我知道如果/其他有效,我需要一个替代方案。
我在用
B = String.Concat(A.Substring(0, 40));
捕获值的前 40 个字符。
如果 at 的值A
大于40
,B
则可以捕获,但如果 的值A
小于40
,则在 处没有捕获的值B
。
又快又脏:
A.Length > 40 ? A.Substring(0, 40) : A
为什么不为它创建一个扩展......称之为截断或左,或其他。
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);
String.Concat 在这里不符合您的目的。您应该执行以下操作:
if(A.Length > 40)
B= A.Substring(0,40);
else
B=A;
使用下面的代码来子串
B = String.padright(40).Substring(0, 40)).Trim()
扩展最适合这样的问题;)我的名字有些脏,但每个人都知道它会做什么——这是异常安全的子字符串:
public static string SubstringNoLongerThanSource(this string source, int startIndex, int maxLength)
{
return source.Substring(startIndex, Math.Min(source.Length - startIndex, maxLength));
}
B = string.Concat(A.Substring(0, Math.Min(40, A.Length)));
您可以使用Left from Microsoft.VisualBasic.Strings
。
B = Microsoft.VisualBasic.Strings.Left(A, 40);
反正不知道你为什么要使用Concat
。
另一种使用 Take 的方法
B = new string(A.Take(40).ToArray())
或扩展方法
public static string Left(this string value, int count)
{
return new string(value.Take(count).ToArray());
}