25

好的,我知道如果/其他有效,我需要一个替代方案。

我在用

B = String.Concat(A.Substring(0, 40));

捕获值的前 40 个字符。

如果 at 的值A大于40B则可以捕获,但如果 的值A小于40,则在 处没有捕获的值B

4

8 回答 8

64

又快又脏:

  A.Length > 40 ? A.Substring(0, 40) : A
于 2012-06-14T11:48:06.713 回答
26

为什么不为它创建一个扩展......称之为截断或左,或其他。

public static class MyExtensions
{
    public static string Truncate(this string s, int length)
    {
      if(s.Length > length) return s.Substring(0, length);
      return s;
    }
}

然后你可以简单地这样称呼它:

string B = A.Truncate(40);

另请注意,您不必将其设为扩展方法,尽管它会更简洁。

在您的 StringTool 类中:

    public static string Truncate(string value, int length)
    {
      if(value.Length > length) return value.Substring(0, length);
      return value;
    }

并称之为:

string B = StringTool.Truncate(A, 40);
于 2012-06-14T12:04:27.843 回答
20

String.Concat 在这里不符合您的目的。您应该执行以下操作:

if(A.Length > 40)
       B= A.Substring(0,40);
else
       B=A;
于 2012-06-14T12:04:41.773 回答
19

使用下面的代码来子串

B = String.padright(40).Substring(0, 40)).Trim()
于 2013-03-12T18:34:41.977 回答
16

扩展最适合这样的问题;)我的名字有些脏,但每个人都知道它会做什么——这是异常安全的子字符串:

public static string SubstringNoLongerThanSource(this string source, int startIndex, int maxLength)
{
    return source.Substring(startIndex, Math.Min(source.Length - startIndex, maxLength));
}
于 2015-06-07T10:43:34.457 回答
7
B = string.Concat(A.Substring(0, Math.Min(40, A.Length)));
于 2016-10-04T10:54:41.937 回答
4

您可以使用Left from Microsoft.VisualBasic.Strings

B = Microsoft.VisualBasic.Strings.Left(A, 40);

反正不知道你为什么要使用Concat

于 2012-06-14T11:50:25.577 回答
3

另一种使用 Take 的方法

B = new string(A.Take(40).ToArray())

或扩展方法

public static string Left(this string value, int count)
{
    return new string(value.Take(count).ToArray());
}
于 2021-02-17T17:10:53.080 回答