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