【www.gdgbn.com--php应用】

stringbuilder 的属性与方法:
--------------------------------------------------------------------------------
 
/* 属性 */
capacity;         // 容量; 可读写, 也可在构建时设置, 但改写时使用 ensurecapacity() 更保险
length;           // 长度; 可读写, 写入 0 时, 同 clear(); length <= capacity <= maxcapacity
maxcapacity;      // 最大容量; 只读, 只能在构建时设置, 超出则异常

/* 方法 */
append();         // 追加; 为接受不同类型的数据, 它有很多重载
appendformat();   // 按格式追加
appendline();     // 追加换行符
clear();          // 取消; 之后 length = 0; 但 capacity、maxcapacity 不变
copyto();         // 复制指定部分到 char[]
ensurecapacity(); // 设置 capacity
insert();         // 插入
remove();         // 移除
replace();        // 替换
tostring();       // 输出文本, 可同时截取

--------------------------------------------------------------------------------

构造函数的 6 种重载:
--------------------------------------------------------------------------------
 

using system.text; // stringbuilder 所属的命名空间

protected void button1_click(object sender, eventargs e)
{
    string str = "";

    /* 无参时, capacity 默认 16 */
    stringbuilder sb1 = new stringbuilder();
    str += sb1.capacity.tostring("capacity: #n"); //capacity: 16

    /* 构建时指定 capacity 大小 */
    stringbuilder sb2 = new stringbuilder(11);
    str += sb2.capacity.tostring("capacity: #n"); //capacity: 11

    /* 使用字符串构建时, 如果字符串 length > 16, 其 capacity 同字符串的长度 */
    stringbuilder sb3 = new stringbuilder("abcdefghijklmnopqrstuvwxyz");
    str += sb3.capacity.tostring("capacity: #n"); //capacity: 26

    /* 指定 capacity 和 maxcapacity */
    stringbuilder sb4 = new stringbuilder(4, 10);
    str += sb4.capacity.tostring("capacity: #t"); //capacity: 4
    sb4.append("1234567890");
    str += sb4.capacity.tostring("capacity: #n"); //capacity: 10
    try { sb4.append("abc"); }
    catch (exception err) { str += err.message + "n"; } //容量小于当前大小...

    /* 用字符串构建, 同时指定 capacity */
    stringbuilder sb5 = new stringbuilder("1234567890", 32);
    str += string.format("capacity: {0}tlength: {1}n", sb5.capacity, sb5.length); //capacity: 32  length: 10

    /* 从字符串截取构建, 同时指定 capacity */
    stringbuilder sb6 = new stringbuilder("abcdefg", 1, 3, 12);
    str += string.format(""{0}"tcapacity: {1}tlength: {2}", sb6, sb6.capacity, sb6.length); //"bcd" capacity: 12 length: 3

    textbox1.text = str;
}

  --------------------------------------------------------------------------------

练习:
--------------------------------------------------------------------------------
 

//tostring()
protected void button1_click(object sender, eventargs e)
{
    stringbuilder sb = new stringbuilder("1234567890");
    string s1 = sb.tostring();     //1234567890
    string s2 = sb.tostring(2, 3); //345

    textbox1.text = s1 + "n" + s2;
}

//append()、appendformat()、appendline()
protected void button2_click(object sender, eventargs e)
{
    stringbuilder sb = new stringbuilder(256);
    sb.append("abcdefg");
    sb.appendline();
    sb.append(3.1415926);
    sb.appendline();
    sb.appendformat("{0:#.##}", 3.1415926);
    textbox1.text = sb.tostring();
/*
abcdefg
3.1415926
3.14
*/
}

//insert()、remove()、replace()
protected void button3_click(object sender, eventargs e)
{
    stringbuilder sb = new stringbuilder("..........", 256);

    string s1 = sb.insert(2, "abc").tostring();  //..abc........
    string s2 = sb.insert(2, 3.14).tostring();   //..3.14abc........
    string s3 = sb.remove(6, 3).tostring();      //..3.14........
    string s4 = sb.replace(".", "*").tostring(); //**3*14********

    textbox1.text = s1 + "n" + s2 + "n" + s3 + "n" + s4;
}

//copyto
protected void button4_click(object sender, eventargs e)
{
    string str = "..........";
    char[] carr = str.tochararray();

    stringbuilder sb = new stringbuilder("1234567890");
    sb.copyto(2, carr, 0, 3);
    textbox1.text = new string(carr); //345.......
}

本文来源:http://www.gdgbn.com/jiaocheng/28660/