Java の文字列で、左トリムをする方法(先頭の半角スペースを削除する方法)を書いていきます。
バージョン
動作確認で使用した製品のバージョンは以下の通りです。
コード例
プログラムの例は以下の通りです。
package org.example; public abstract class Trim { public static String leftSpace(String str) { char[] chars = str.toCharArray(); int i = 0; for (; i < chars.length; i++) { if (chars[i] != ' ') break; } if (i == 0) return str; else return str.substring(i); } }
null チェックはしないで、半角スペースのみトリムします。
テストケース
JUnit5 のテストケースは以下の通りです。
package org.example; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertThrows; import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.CsvSource; class TrimTest { @ParameterizedTest @CsvSource({ "' 吉田 太郎', '吉田 太郎'", // 先頭スペース1つ "' 吉田 太郎', '吉田 太郎'", // 先頭スペース2つ "'吉田 太郎', '吉田 太郎'", // 先頭スペースなし "' 𠮷田 太郎', '𠮷田 太郎'", // サロゲートペア「𠮷」 "' ',''", // スペースのみ "'',''", // 空文字 }) void testLeftTrim(String target, String expected) { // 実行 String result = Trim.leftSpace(target); // 検証 assertEquals(expected, result); } @Test void testLeftTrimNull() { assertThrows(NullPointerException.class, () -> { Trim.leftSpace(null); }); } }
サロゲートペアの文字があっても動くことを確認しています。
ビルドファイル
Maven のビルドファイルは以下の通りです。
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.example</groupId>
<artifactId>trim</artifactId>
<version>1.0.0</version>
<packaging>jar</packaging>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.junit</groupId>
<artifactId>junit-bom</artifactId>
<version>5.9.2</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.0.0-M8</version>
</plugin>
</plugins>
</build>
</project>