2015-04-06 58 views

回答

3

我知道的最快方法是:

var result = s.Length < n ? s : s.Substring(0, n); 
+1

简单,但效率不高:'VAR的结果=新的字符串(s.Take(N).ToArray ());' – 2015-04-06 07:34:32

0

最好的办法是写一对夫妇的扩展方法。

然后,你可以使用它像string result = sourceString.Left(10);

public static class StringExt 
{ 
    /// <summary> 
    /// Returns the first <paramref name="count"/> characters of a string, or the entire string if it 
    /// is less than <paramref name="count"/> characters long. 
    /// </summary> 
    /// <param name="self">The string. Cannot be null.</param> 
    /// <param name="count">The number of characters to return.</param> 
    /// <returns>The first <paramref name="count"/> characters of the string.</returns> 

    public static string Left(this string self, int count) 
    { 
     Contract.Requires(self != null); 
     Contract.Requires(count >= 0); 

     Contract.Ensures(Contract.Result<string>() != null); 
     // ReSharper disable PossibleNullReferenceException 
     Contract.Ensures(Contract.Result<string>().Length <= count); 
     // ReSharper restore PossibleNullReferenceException 

     if (self.Length <= count) 
      return self; 
     else 
      return self.Substring(0, count); 
    } 

    /// <summary> 
    /// Returns the last <paramref name="count"/> characters of a string, or the entire string if it 
    /// is less than <paramref name="count"/> characters long. 
    /// </summary> 
    /// <param name="self">The string. Cannot be null.</param> 
    /// <param name="count">The number of characters to return.</param> 
    /// <returns>The last <paramref name="count"/> characters of the string.</returns> 

    public static string Right(this string self, int count) 
    { 
     Contract.Requires(self != null); 
     Contract.Requires(count >= 0); 

     Contract.Ensures(Contract.Result<string>() != null); 
     // ReSharper disable PossibleNullReferenceException 
     Contract.Ensures(Contract.Result<string>().Length <= count); 
     // ReSharper restore PossibleNullReferenceException 

     if (self.Length <= count) 
      return self; 
     else 
      return self.Substring(self.Length - count, count); 
    } 
}