好的,我知道如果/其他有效,我需要另一种选择。
我正在使用
B = String.Concat(A.Substring(0, 40));
捕获值的前40个字符。
如果A
的值大于40
,则B
能够捕获,但如果A
的值小于40
, B
没有捕获任何值。
答案 0 :(得分:48)
又快又脏:
A.Length > 40 ? A.Substring(0, 40) : A
答案 1 :(得分:21)
为什么不为它创建一个扩展...称之为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);
答案 2 :(得分:17)
不理解在String.Concat中只传递单个字符串的目的。您的目的可以通过以下方式解决:
if(A.Length > 40)
B= A.Substring(0,40);
else
B=A;
答案 3 :(得分:10)
使用下面的代码来子串
B = String.padright(40).Substring(0, 40))
答案 4 :(得分:9)
扩展最适合像这样的问题;) 我有一些肮脏的名字,但每个人都知道它会做什么 - 这是异常安全的子串:
public static string SubstringNoLongerThanSource(this string source, int startIndex, int maxLength)
{
return source.Substring(startIndex, Math.Min(source.Length - startIndex, maxLength));
}
答案 5 :(得分:5)
您可以使用Microsoft.VisualBasic.Strings
中的Left。
B = Microsoft.VisualBasic.Strings.Left(A, 40);
无论如何,不知道为什么要使用Concat
。
答案 6 :(得分:3)
B = string.Concat(A.Substring(0, Math.Min(40, A.Length)));
答案 7 :(得分:1)
另一种使用 Take 的方法
B = new string(A.Take(40).ToArray())
或扩展方法
public static string Left(this string value, int count)
{
return new string(value.Take(count).ToArray());
}