Table of Contents
ToggleJava StringBuilder Class
提供了 String 類別的替代方案,用於建立可修改字串, StringBuilder Class 介紹常見的 charAt 、 indexOf 、 lastIndexOf 、 substring 等方法,本篇增加了範例,並透過單元測試來驗證產出結果。
檔案目錄
./
+- src
+- test
| +- org
| +- ruoxue
| +- java_147
| +- string
| +- stringbuilder
| +- StringBuilderClassTest.java
單元測試
提供查找、搜尋、取代等操作 String 。
charAt
建立一個 StringBuilder ,增加字串後,取得指定索引的字元。
@Test
public void charAt() {
char expected = 'a';
StringBuilder builder = new StringBuilder();
builder.append("Java 147");
char result = builder.charAt(3);
System.out.println(result);
assertEquals(expected, result);
result = builder.charAt(5);
System.out.println(result);
assertEquals('1', result);
}
a
1
getChars
StringBuilder Class Java 建立一個 StringBuilder ,增加字串後,取得字元。
@Test
public void getChars() {
StringBuilder builder = new StringBuilder();
builder.append("Java 147");
IntStream stream = builder.chars();
List<Integer> list = stream.boxed().collect(Collectors.toList());
System.out.println(list);
}
[74, 97, 118, 97, 32, 49, 52, 55]
indexOf
StringBuilder Class Java 建立一個 StringBuilder ,增加字串後,搜尋指定的字串,傳回位置。
@Test
public void indexOf() {
int expected = 1;
StringBuilder builder = new StringBuilder();
builder.append("Java 147");
int result = builder.indexOf("a");
System.out.println(result);
assertEquals(expected, result);
result = builder.indexOf("a", 2);
System.out.println(result);
assertEquals(3, result);
}
1
3
lastIndexOf
StringBuilder Class Java 建立一個 StringBuilder ,增加字串後,從後面搜尋指定的字串,傳回位置。
@Test
public void lastIndexOf() {
int expected = 3;
StringBuilder builder = new StringBuilder();
builder.append("Java 147");
int result = builder.lastIndexOf("a");
System.out.println(result);
assertEquals(expected, result);
result = builder.lastIndexOf("a", 2);
System.out.println(result);
assertEquals(1, result);
}
3
1
setCharAt
StringBuilder Class in Java 建立一個 StringBuilder ,增加字串後,設定指定位置的字元。
@Test
public void setCharAt() {
StringBuilder builder = new StringBuilder();
builder.append("Java 147");
builder.setCharAt(3, 'A');
System.out.println(builder);
assertEquals("JavA 147", builder.toString());
}
JavA 147
substring
StringBuilder Class in Java 建立一個 StringBuilder 增加字串後,取得指定位置的字串。
@Test
public void substring() {
StringBuilder builder = new StringBuilder();
builder.append("Java 147");
String result = builder.substring(3);
System.out.println(result);
assertEquals("a 147", result);
result = builder.substring(0, 3);
System.out.println(result);
assertEquals("Jav", result);
}
a 147
Jav
replace
StringBuilder Class in Java 建立一個 StringBuilder ,增加字串後,取代指定位置的字串。
@Test
public void replace() {
StringBuilder builder = new StringBuilder();
builder.append("Java 147");
builder.replace(0, 2, "JAVA");
System.out.println(builder);
assertEquals("JAVAva 147", builder.toString());
}
JAVAva 147
StringBuilderClassTest.java
StringBuilder Class in Java 新增單元測試,驗證是否符合預期。
package org.ruoxue.java_147.string.stringbuilder;
import static org.junit.Assert.*;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
import org.junit.Test;
public class StringBuilderClassTest {
@Test
public void charAt() {
char expected = 'a';
StringBuilder builder = new StringBuilder();
builder.append("Java 147");
char result = builder.charAt(3);
System.out.println(result);
assertEquals(expected, result);
result = builder.charAt(5);
System.out.println(result);
assertEquals('1', result);
}
@Test
public void getChars() {
StringBuilder builder = new StringBuilder();
builder.append("Java 147");
IntStream stream = builder.chars();
List<Integer> list = stream.boxed().collect(Collectors.toList());
System.out.println(list);
}
@Test
public void indexOf() {
int expected = 1;
StringBuilder builder = new StringBuilder();
builder.append("Java 147");
int result = builder.indexOf("a");
System.out.println(result);
assertEquals(expected, result);
result = builder.indexOf("a", 2);
System.out.println(result);
assertEquals(3, result);
}
@Test
public void lastIndexOf() {
int expected = 3;
StringBuilder builder = new StringBuilder();
builder.append("Java 147");
int result = builder.lastIndexOf("a");
System.out.println(result);
assertEquals(expected, result);
result = builder.lastIndexOf("a", 2);
System.out.println(result);
assertEquals(1, result);
}
@Test
public void setCharAt() {
StringBuilder builder = new StringBuilder();
builder.append("Java 147");
builder.setCharAt(3, 'A');
System.out.println(builder);
assertEquals("JavA 147", builder.toString());
}
@Test
public void substring() {
StringBuilder builder = new StringBuilder();
builder.append("Java 147");
String result = builder.substring(3);
System.out.println(result);
assertEquals("a 147", result);
result = builder.substring(0, 3);
System.out.println(result);
assertEquals("Jav", result);
}
@Test
public void replace() {
StringBuilder builder = new StringBuilder();
builder.append("Java 147");
builder.replace(0, 2, "JAVA");
System.out.println(builder);
assertEquals("JAVAva 147", builder.toString());
}
}
心得分享
Java StringBuilder Class Example 由於 Java 中的 String 類別建立了一個不可變的字串序列,使用 StringBuilder 用來替代 String 的操作, StringBuilder Class in Java 提供 charAt 、 indexOf 、 lastIndexOf 、 substring 等操作範例。