构建StringBuilder实例

构建StringBuilder实例

StringBuilder和StringBuffer都是可变的字符序列(即自身字符序列可被修改)

StringBuilder是非线程安全的,StringBuffer是线程安全的

涉及线程安全情况下通常选择StringBuffer;

StringvBuilder的执行效率比StringBuffer跟高

StringBuilder对象创建

public StringBuilder()
public StringBuilder(int capacity)
public StringBuilder(String str)
public StringBuilder(CharSequence seq)
package com.ax;

public class TestStringBuilder {

    public static void main(String[] args) {

        StringBuilder builder = new StringBuilder(8);
        System.out.println(builder.toString());
        System.out.println("长度:" + builder.length());//长度:0
        System.out.println("默认容量:" + builder.capacity());//默认容量:8

        StringBuilder builder1 = new StringBuilder("大家好!");
        builder1 = builder1.append(123);
        System.out.println(builder1);//大家好!123

    }
}

StringBuilder常用方法

public StringBuilder append(Object obj)
public StringBuilder delete(int start,int end)
public StringBuilder deleteCharAt(int index)
public StringBuilder insert(int offset,Object obj)
public StringBuilder replace(int start,int end,String str)

工具类:

package com.ax.tools;

public class StringManagement {
    public static String removeStringFromStartToEnd(String res,int start,int end){
        StringBuilder builder = new StringBuilder(res);
        builder.delete(start, end) ;
        return builder.toString();
    }
    public static String replaceTargetFromStartToEnd(String res,String replace){
        StringBuilder builder = new StringBuilder(res);
        //判断是否为等号
        if (builder.toString().contains("=")){
            builder.replace(builder.indexOf("="),builder.indexOf("=")+1,replace);//如果为等号就将其替换,
            return StringManagement.replaceTargetFromStartToEnd(builder.toString(), replace);//循环判断是否为等号
        }
        return builder.toString();
    }
}

测试类:

package com.ax.test;

import com.ax.tools.StringManagement;

public class TestStringBuilder {

    public static void main(String[] args) {

        StringBuilder builder = new StringBuilder(8);
        System.out.println(builder.toString());//
        System.out.println("长度:" + builder.length());//长度:0
        System.out.println("默认容量:" + builder.capacity());//默认容量:8

        StringBuilder builder1 = new StringBuilder("大家好!");
        builder1 = builder1.append(123);
        System.out.println(builder1);//大家好!123

        System.out.println( StringManagement.removeStringFromStartToEnd("喜羊羊与灰太狼",2,4));//喜羊灰太狼
        String target = "{name=\"king\",address=\"人民大街\",age=23,email=\"java@163.com\"}";
        System.out.println(StringManagement.replaceTargetFromStartToEnd(target,":"));
        //{name:"king",address:"人民大街",age:23,email:"java@163.com"}

    }
}

工具类:

package com.ax.tools;

public class StringManagement {
    
    public static String insertObjectOn(String res,String tag,Object insertObj){
        StringBuilder builder = new StringBuilder(res);
        if (builder.toString().contains(tag)){//如果它包含给定的tag
            int insertTag = builder.indexOf(tag)+4;//查找位置,并在此处插入insertObj
            builder.insert(insertTag,insertObj);//插入insertObj
            return StringManagement.insertObjectOn(builder.toString(), tag,insertObj);//循环调用,如果都替换完成,则会找不到结束替换
        }
        return builder.toString();
    }
}

测试类

package com.ax.test;

import com.ax.tools.StringManagement;

public class TestStringBuilder {

    public static void main(String[] args) {
        /**将此字符串中age:没有值的插入默认值18
         [{name:\"king\",age:,address=\"人民大街\"},
         {name:\"lucy\",age:,address=\"人民大街\"},
         {name:\"tom\",age:,address=\"人民大街\"},
         {name:\"rose\",age:,address=\"人民大街\"}
         ]
         */
        String target1 = "[{name:\"king\",age:,address=\"人民大街\"},\r\n" +
                "   {name:\"lucy\",age:,address=\"人民大街\"},\r\n" +
                "   {name:\"tom\",age:,address=\"人民大街\"},\r\n" +
                "   {name:\"rose\",age:,address=\"人民大街\"},\r\n" +
                " ]";
        System.out.println(StringManagement.insertObjectOn(target1,"age:,",18));
/**
  [{name:"king",age:18,address="人民大街"},
 {name:"lucy",age:18,address="人民大街"},
 {name:"tom",age:18,address="人民大街"},
 {name:"rose",age:18,address="人民大街"},
  ]
 */

    }
}

版权声明:本文为m0_46359448原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。