using System; using System.Collections.Generic; using System.Text; namespace Apewer.Internals { internal class TextBuilder { private StringBuilder _sb = null; private string _value = null; /// 获取或设置字符串内容。 public string Value { get { if (_value == null) _value = _sb.ToString(); return _value; } set { Clear(); Append(value); } } /// 追加内容。 public void Append(string argStrings) { if (string.IsNullOrEmpty(argStrings)) return; _value = null; _sb.Append(argStrings); } /// 追加内容。 public void Append(IEnumerable argStrings) { if (argStrings == null) return; _value = null; foreach (var vstring in argStrings) if (!string.IsNullOrEmpty(vstring)) _sb.Append(vstring); } /// 追加内容。 public void Append(params string[] argText) { _value = null; foreach (var vtext in argText) if (!string.IsNullOrEmpty(vtext)) _sb.Append(vtext); } /// 追加内容。 public void Append(char argChar) { _value = null; _sb.Append(argChar.ToString()); } /// 追加内容。 public void Append(IEnumerable argChar) { if (argChar == null) return; _value = null; foreach (var vchar in argChar) _sb.Append(vchar.ToString()); } /// 追加内容。 public void Append(params char[] argChar) { _value = null; foreach (var vchar in argChar) _sb.Append(vchar.ToString()); } /// 清空内容,重建对象。 public void Clear() { _value = null; _sb = new StringBuilder(); } /// 内容长度。 public int Length { get { return _sb.Length; } } /// 替换内容子中的字符串。 public void Replace(string argOld, string argNew) { if (!string.IsNullOrEmpty(argOld)) { _value = null; var vnew = string.IsNullOrEmpty(argNew) ? "" : argNew; _sb.Replace(argOld, vnew); } } /// 获取字符串内容。 public override string ToString() { if (_value == null) _value = _sb.ToString(); return _value; } /// 构造函数。 public TextBuilder() { _sb = new StringBuilder(); } /// 构造函数。 public TextBuilder(string argContent) { _sb = new StringBuilder(); if (string.IsNullOrEmpty(argContent)) return; _sb.Append(argContent); } } }