什么方法在String类中只返回前N个字符?
我想写一个扩展方法给String
类,这样如果input的stringto比所提供的长度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
字符?
public static string TruncateLongString(this string str, int maxLength) { return str.Substring(0, Math.Min(str.Length, maxLength)); }
string truncatedToNLength = new string(s.Take(n).ToArray());
如果n大于s.Length,它仍然是正确的。
你可以使用LINQ str.Take(n)
或str.SubString(0, n)
,后者会为n > str.Length
抛出一个ArgumentOutOfRangeException
exception。
请注意,LINQ版本返回一个IEnumerable<char>
,所以你必须将IEnumerable<char>
转换为string
: new string(s.Take(n).ToArray())
。
public static string TruncateLongString(this string str, int maxLength) { return str.Length <= maxLength ? str : str.Remove(maxLength); }
只是:
public static String Truncate(String input,int maxLength) { if(input.Length > maxLength) return input.Substring(0,maxLength); return input; }
substring(int startpos, int lenght);
如果我们正在谈论validation,为什么我们还没有检查空string条目。 任何具体的原因?
我认为下面的方式帮助,因为IsNullOrEmpty是一个系统定义的方法和三元运算符cyclomatic复杂度= 1而if(){}否则{}值为2。
public static string Truncate(string input,int truncLength){
return (!String.IsNullOrEmpty(input) && input.Length >= truncLength) ? input.Substring(0, truncLength) : input; }
无论何时我必须在C#中进行string操作,我都会错过Visual Basic中良好的Left
和Right
函数,这比使用Substring
更简单。
所以在我的大多数C#项目中,我为它们创build了扩展方法:
public static class StringExtensions { public static string Left(this string str, int length) { return str.Substring(0, Math.Min(length, str.Length)); } public static string Right(this string str, int length) { return str.Substring(str.Length - Math.Min(length, str.Length)); } }
注意:
Math.Min
部分就在那里,因为当inputstring的长度小于请求的长度时, Substring
会抛出一个ArgumentOutOfRangeException
,正如前面答复中的一些注释中已经提到的那样。
用法:
string longString = "Long String"; // returns "Long"; string left1 = longString.Left(4); // returns "Long String"; string left2 = longString.Left(100);
string.Substring(0,N); // 0 – 开始索引和n – 字符数