我想为 String
类编写一个扩展方法,这样如果输入字符串to比提供的长度 N
长,则只显示第一个 N
字符 .
这是它的样子:
public static string TruncateLongString(this string str, int maxLength)
{
if (str.Length <= maxLength)
return str;
else
//return the first maxLength characters
}
我可以使用什么 String.*()
方法来获取 str
的第一个 N
字符?
10 回答
只是:
如果我们正在谈论验证也是为什么我们没有检查空字符串条目 . 任何具体原因?
我认为以下方式有帮助,因为IsNullOrEmpty是一个系统定义的方法,三元运算符的圈复杂度= 1而if(){} else {}的值为2 .
这个解决方案有一个小小的好处,如果n大于s.Length,它仍然是正确的 .
您可以使用LINQ
str.Take(n)
或str.SubString(0, n)
,后者将为n > str.Length
抛出ArgumentOutOfRangeException
异常 .请注意,LINQ版本返回
IEnumerable<char>
,因此您必须将IEnumerable<char>
转换为string
:new string(s.Take(n).ToArray())
.每当我必须在C#中进行字符串操作时,我都会错过Visual Basic中的旧的
Left
和Right
函数,这些函数比Substring
更容易使用 .所以在我的大多数C#项目中,我为它们创建了扩展方法:
注意:
Math.Min
部分存在,因为Substring
在输入字符串的长度小于请求的长度时抛出ArgumentOutOfRangeException
,如前面答案中的一些注释中已经提到的那样 .用法:
我在我的项目中添加了这个,因为在我使用它的时候很有可能在循环中使用它,在一个在线托管的项目中因此我不想要任何崩溃,如果我可以管理它 . 长度适合我的专栏 . 这是C#7
只需一行:
string.Substring(0,N); // 0 - 开始索引和n - 字符数