一、StringBuilder轉String問題
1、StringBuilder轉String中文亂碼問題
在應用中,當需要對String進行頻繁的修改時,由於String的不可變性,會導致頻繁的創建新String對象,造成性能浪費。此時,我們可以選擇使用StringBuilder進行字元串的拼接。但是,在將StringBuilder轉換為String時,如果出現中文亂碼,怎麼辦?下面是解決辦法:
StringBuilder sb = new StringBuilder("轉換測試"); String str = new String(sb.toString().getBytes(), "UTF-8"); System.out.println(str); // 轉換測試
2、StringBuilder轉String存在null值
在使用StringBuilder進行字元串拼接時,可能會出現null值的情況。此時,我們可以通過以下方法去除null值:
StringBuilder sb = new StringBuilder(); sb.append("value1").append(",").append(null).append(",").append("value2"); String str = sb.toString().replaceAll(",null,", ","); System.out.println(str); // value1,value2
3、StringBuilder清空內容
在使用StringBuilder時,有時需要清空其內容,以便重新進行字元串拼接。清空StringBuilder內容的方法如下:
StringBuilder sb = new StringBuilder("清空測試"); sb.setLength(0); System.out.println(sb.toString()); // ""
二、String與其他常用類型互相轉換
1、String轉Set集合
有時候,我們需要將一個String類型的字元串拆分成多個部分,存儲到Set集合中,可以使用以下方法:
String str = "java,python,c++,go,java"; Set set = new HashSet(Arrays.asList(str.split(","))); System.out.println(set); // [python, go, c++, java]
2、String轉List類型
String可以通過split()方法進行分割,然後存儲到List中:
String str = "java,python,c++,go,java"; List list = Arrays.asList(str.split(",")); System.out.println(list); // [java, python, c++, go, java]
3、String轉int
經常需要將String類型轉換成int,可以使用Integer.parseInt()方法:
String str = "100"; int i = Integer.parseInt(str); System.out.println(i); // 100
4、String轉byte數組
在網路傳輸和加密解密等場景中,常常需要將字元串轉換成byte數組,可以使用getBytes()方法實現:
String str = "string2byte[]"; byte[] bytes = str.getBytes(); System.out.println(Arrays.toString(bytes)); // [115, 116, 114, 105, 110, 103, 50, 98, 121, 116, 101, 91, 93]
5、String轉List對象
當字元串中存儲的是一個對象數組時,需要將其提取出來,並存儲到List中,可以使用以下的代碼:
String str = "[{\"id\":1,\"name\":\"Tom\"},{\"id\":2,\"name\":\"Jerry\"}]"; List<Map> list = new ArrayList(); JSONArray jsonArray = JSONArray.parseArray(str); for (int i = 0; i < jsonArray.size(); i++) { Map map = new HashMap(); JSONObject jsonObject = jsonArray.getJSONObject(i); map.put("id", jsonObject.getInteger("id")); map.put("name", jsonObject.getString("name")); list.add(map); } System.out.println(list); // [{id=1, name=Tom}, {id=2, name=Jerry}]
三、StringBuilder轉String的實踐應用
StringBuilder轉String在開發中使用頻繁,特別是在拼接大量字元串時,使用StringBuilder會大大提高程序效率。以下是一段使用StringBuilder拼接HTML代碼的實例:
StringBuilder sb = new StringBuilder(); sb.append("<html>\n") .append("<head>\n") .append("<title>StringBuilder to String 實踐</title>\n") .append("</head>\n") .append("<body>\n") .append("<p>StringBuilder to String演示</p>\n") .append("</body>\n") .append("</html>\n"); String html = sb.toString(); System.out.println(html);
以上代碼使用StringBuilder拼接HTML代碼,最後轉換成String類型輸出。StringBuilder轉String的應用不僅僅局限於這個,根據場景不同,可以有多種實踐應用。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/150666.html