只是好奇我是否可以在String.Length大于或等于20而不使用If
或Try catch
的情况下对字符串进行子串?
谢谢!
答案 0 :(得分:17)
if(input.Length >= 20)
{
input = input.Substring(0,20);
}
如果你真的不想使用if语句,你可以使用Linq,它只是模糊了解决方案,在这种情况下效率较低:
input = new string(input.Take(20).ToArray());
或技术上这也不使用if
语句:
input = input.Length >= 20 ? input.Substring(0,20) : input;
答案 1 :(得分:11)
使用字符串扩展名。它仍然使用IF,但是,它使您的代码在使用时更清晰。
public static string Left(this string input, int length)
{
string result = input;
if (input != null && input.Length > length)
{
result = input.Substring(0, length);
}
return result;
}
用法:
input = input.Left(20);
答案 2 :(得分:5)
someString = someString.Substring(0,Math.Min(20,someString.Length));
答案 3 :(得分:2)
只是不在乎......
a.SubString(Math.Min(startPos, a.Length), Math.Min(a.Length - Math.Min(startPos, a.Length),
requestedLen - Math.Min(startPos, a.Length);
哦,天啊,我的大脑燃烧,有时间打麻袋......
答案 4 :(得分:1)
这确实需要澄清,因为如果它小于20,你没有说明你想要发生什么。返回原始字符串或返回null?
无论如何,如果你不想要if块,你可以使用三元运算符:
(someString.Length < 20) ? someString : someString.SubString(...
答案 5 :(得分:0)
如果确保子字符串范围在原始字符串范围内,则不需要try-catch。当然,你不能得到一个比原来更长的子串。