简体   繁体   English

C#从StringBuilder的开头提取数据

[英]C# extract data from start of StringBuilder

I want to extract some chars from start of StringBuilder variable. 我想从StringBuilder变量的开头提取一些字符。
I wrote bellow code : 我写下了以下代码:

private string getPart(StringBuilder data, int len)
{
    string s = data.ToString(0, len);
    data.Remove(0, len);
    return s;
}

Any suggestion fro better coding? 有什么建议可以更好地编码?

If you want character extraction in many parts of your code, you can try implementing the algorithm as an extension method : 如果要在代码的许多部分中提取字符,可以尝试将算法实现为扩展方法

  public static class StringBuilderExtensions {
    public static String Extract(this StringBuilder source, int length) {
      if (Object.ReferenceEquals(null, source))
        throw new ArgumentNullException("source");
      else if ((length < 0) || (length > source.Length))
        throw new ArgumentOutOfRangeException("length");

      // Your actual algorithm
      String result = source.ToString(0, length);

      source.Remove(0, length);

      return result;
    }
  }

  ...

  StringBuilder data = ...
  String s = data.Extract(len); // <- Just extract

You can use CopyTo method: 您可以使用CopyTo方法:

private string getPart(StringBuilder data, int len)
{
    var output = new char[len];
    data.CopyTo(0, output, 0, len);
    data.Remove(0, len);
    return new string(output);
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM