什么方法在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抛出一个ArgumentOutOfRangeExceptionexception。

请注意,LINQ版本返回一个IEnumerable<char> ,所以你必须将IEnumerable<char>转换为stringnew 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中良好的LeftRight函数,这比使用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 – 字符数