Java StringBuilder Class - Java 147

Java StringBuilder Class – Java 147

Java 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 等操作範例。

發佈留言