Java文字列処理 - Stringクラス
2008/10/08 11:59Update
Javaでは、文字列を扱うには、StringやStringBuffer、StringBuilderクラスなどを用います。本文はStringクラスの基本的な使い方(文字列の生成、連結、比較、置換、変換、分割など)について学びます。
とりあえず、サンプルから見てみます。
"Hello World! こんにちは、Java!" のような文字の配列は文字列で、Stringクラスは文字列を処理するためのAPIを提供します。
API仕様
String (Java 2 プラットフォーム SE v1.4.0)
http://sdc.sun.co.jp/java/docs/j2se/1.4/ja/docs/ja/api/java/lang/String.html
String (Java Platform SE 6)
http://java.sun.com/javase/ja/6/docs/ja/api/java/lang/String.html
例1:
String name = "hello";
例2:
String name = new String("hello");
例3:
char []cc = {'2', 'A', 'B'};
String name = new String(cc);
例4:
byte []bb = {'2', 'A', 12};
String name = new String(bb);
※その他、多くの生成方法があります、詳細について、API仕様をご参照ください。
Stringクラスで文字列の操作
Stringクラスではさまざまな文字列操作用APIを提供しています。
◇ 「+」で連結
String name = "abc" + "def";
//name = "abcdef"
String hello = "hello";
String world = " world";
String helloWorld = hello + world;
//helloWorld = "hello world"
◇ 「+=」で連結
String name = "こんにちは!";
name += "java";
//name = "こんにちは!java"
◇ String.concatメソッドで連結
String name = "こんにちは!";
name.concat("java");
//name = "こんにちは!java"
String name = "こんにちは"
int len = name.length();
//len は 5になります
◇String.equals(String)メソッド
String.equalsメソッドは、パラメータで指定される文字列の値と等しいかどうかを調べます。
例:
boolean eq = "ABC".equals("ABC"); //true
boolean eq = "ABC".equals("abc"); //false
◇String.compareTo(String)メソッド
String.compareTo(String)メソッドは、パラメータで指定される文字列の値と比較します。
例:
int ct = "ABC".compareTo("ABC"); //0(等しい場合)
int ct = "ABC".compareTo("abc"); //-32(右側の値が大きい場合、負の値)
int ct = "abc".compareTo("ABC"); //32(右側の値が小さい場合、正の値)
◇String.compareToIgnoreCase(String)メソッド
String.compareToIgnoreCase(String)メソッドは、大小文字無視して、パラメータで指定される文字列の値と比較します。
例:
System.out.println("abc".compareToIgnoreCase("ABC")); //0(等しい場合)
System.out.println("abc".compareToIgnoreCase("def")); //-3 (右側の値が大きい場合、負の値)
System.out.println("DEF".compareToIgnoreCase("abc")); //3 (右側の値が小さい場合、正の値)
◇matches(String regex)メソッド
String.matches(String)メソッドは、パラメータで指定された正規表現と一致するかどうかを判定します。
※正規表現の詳細について、他の記事で紹介します。
例(数字によって構成されているかどうか):
System.out.println("12345".matches("[0-9]+"));
◇String.replaceメソッド
String replace(char oldChar, char newChar)
この文字列内にあるすべての oldChar を newChar に置換した結果生成される、新しい文字列を返します。
String replace(CharSequence target, CharSequence replacement)
リテラルターゲットシーケンスに一致するこの文字列の部分文字列を、指定されたリテラル置換シーケンスに置き換えます。
例:
System.out.println("Hello World!".replace("o", "a")); //Hella Warld!
◇String.replaceFirstメソッド
指定された正規表現に一致する、この文字列の最初の部分文字列に対し、指定された置換を実行します。
例:
System.out.println("Hello World!".replaceFirst("o", "a")); //Hella World!
◇String.replaceAllメソッド
指定された正規表現に一致する、この文字列の各部分文字列に対し、指定された置換を実行します。
System.out.println("Hello World!".replaceAll("o", "a")); //Hella Warld!
※replaceメソッドの「置換元」に平文を指定するのに、replaceAllメソッドは「正規表現」になります。
◇小文字化
文字列を小文字に変換するには、toLowerCase()メソッドを用います。
例:
System.out.println("Hello World!".toLowerCase()); //hello world!
◇大文字化
文字列を大文字に変換するには、toUpperCase()メソッドを用います。
例:
System.out.println("Hello World!".toUpperCase()); //HELLO WORLD!
◇前後の空白を削除
文字列の前後の空白を取り除くには、trim()メソッドを用います。
System.out.println(" Hello World! ".trim()); //Hello World!
◇String[] split(String regex)
◇String[] split(String regex, int limit)
文字列を、指定された正規表現に一致する位置で分割するには、split(String regex)メソッドを用います。
パラメータは正規表現になりますので、ご注意ください。
例:
String [] words = "Hello World!".split(" ");
for (String word : words) {
System.out.println(word);
}
出力:
Hello
World!
public class TestString {
public static void main(String []args) {
String name = "Hello World! こんにちは、Java!";
System.out.println(name);
}
}
c:\javac TestString.java
c:\java TestString
Hello World! こんにちは、Java!
c:\java TestString
Hello World! こんにちは、Java!
"Hello World! こんにちは、Java!" のような文字の配列は文字列で、Stringクラスは文字列を処理するためのAPIを提供します。
Stringクラスの基本
API仕様
String (Java 2 プラットフォーム SE v1.4.0)
http://sdc.sun.co.jp/java/docs/j2se/1.4/ja/docs/ja/api/java/lang/String.html
String (Java Platform SE 6)
http://java.sun.com/javase/ja/6/docs/ja/api/java/lang/String.html
Stringクラスで文字列の生成
例1:
String name = "hello";
例2:
String name = new String("hello");
例3:
char []cc = {'2', 'A', 'B'};
String name = new String(cc);
例4:
byte []bb = {'2', 'A', 12};
String name = new String(bb);
※その他、多くの生成方法があります、詳細について、API仕様をご参照ください。
Stringクラスで文字列の操作
Stringクラスではさまざまな文字列操作用APIを提供しています。
文字列の連結
◇ 「+」で連結
String name = "abc" + "def";
//name = "abcdef"
String hello = "hello";
String world = " world";
String helloWorld = hello + world;
//helloWorld = "hello world"
◇ 「+=」で連結
String name = "こんにちは!";
name += "java";
//name = "こんにちは!java"
◇ String.concatメソッドで連結
String name = "こんにちは!";
name.concat("java");
//name = "こんにちは!java"
文字列の長さ
String name = "こんにちは"
int len = name.length();
//len は 5になります
文字列の比較
◇String.equals(String)メソッド
String.equalsメソッドは、パラメータで指定される文字列の値と等しいかどうかを調べます。
例:
boolean eq = "ABC".equals("ABC"); //true
boolean eq = "ABC".equals("abc"); //false
◇String.compareTo(String)メソッド
String.compareTo(String)メソッドは、パラメータで指定される文字列の値と比較します。
例:
int ct = "ABC".compareTo("ABC"); //0(等しい場合)
int ct = "ABC".compareTo("abc"); //-32(右側の値が大きい場合、負の値)
int ct = "abc".compareTo("ABC"); //32(右側の値が小さい場合、正の値)
◇String.compareToIgnoreCase(String)メソッド
String.compareToIgnoreCase(String)メソッドは、大小文字無視して、パラメータで指定される文字列の値と比較します。
例:
System.out.println("abc".compareToIgnoreCase("ABC")); //0(等しい場合)
System.out.println("abc".compareToIgnoreCase("def")); //-3 (右側の値が大きい場合、負の値)
System.out.println("DEF".compareToIgnoreCase("abc")); //3 (右側の値が小さい場合、正の値)
◇matches(String regex)メソッド
String.matches(String)メソッドは、パラメータで指定された正規表現と一致するかどうかを判定します。
※正規表現の詳細について、他の記事で紹介します。
例(数字によって構成されているかどうか):
System.out.println("12345".matches("[0-9]+"));
文字列の置換
◇String.replaceメソッド
String replace(char oldChar, char newChar)
この文字列内にあるすべての oldChar を newChar に置換した結果生成される、新しい文字列を返します。
String replace(CharSequence target, CharSequence replacement)
リテラルターゲットシーケンスに一致するこの文字列の部分文字列を、指定されたリテラル置換シーケンスに置き換えます。
例:
System.out.println("Hello World!".replace("o", "a")); //Hella Warld!
◇String.replaceFirstメソッド
指定された正規表現に一致する、この文字列の最初の部分文字列に対し、指定された置換を実行します。
例:
System.out.println("Hello World!".replaceFirst("o", "a")); //Hella World!
◇String.replaceAllメソッド
指定された正規表現に一致する、この文字列の各部分文字列に対し、指定された置換を実行します。
System.out.println("Hello World!".replaceAll("o", "a")); //Hella Warld!
※replaceメソッドの「置換元」に平文を指定するのに、replaceAllメソッドは「正規表現」になります。
文字列の変換
◇小文字化
文字列を小文字に変換するには、toLowerCase()メソッドを用います。
例:
System.out.println("Hello World!".toLowerCase()); //hello world!
◇大文字化
文字列を大文字に変換するには、toUpperCase()メソッドを用います。
例:
System.out.println("Hello World!".toUpperCase()); //HELLO WORLD!
◇前後の空白を削除
文字列の前後の空白を取り除くには、trim()メソッドを用います。
System.out.println(" Hello World! ".trim()); //Hello World!
文字列の分割
◇String[] split(String regex)
◇String[] split(String regex, int limit)
文字列を、指定された正規表現に一致する位置で分割するには、split(String regex)メソッドを用います。
パラメータは正規表現になりますので、ご注意ください。
例:
String [] words = "Hello World!".split(" ");
for (String word : words) {
System.out.println(word);
}
出力:
Hello
World!
Sponsored Link
- Relative Articles
- Java開発及び実行環境の構築 | Linux篇 - (2008/08/31 20:34)
- Java開発及び実行環境の構築 | Windows篇 - (2008/08/31 21:18)
- 5分でJava Hello World! - (2008/08/31 22:13)
- Java言語の制御構文 - 条件分岐if/else/else if - (2008/10/01 21:30)
- Java言語の繰り返し制御構文 - for文 - (2008/10/03 18:22)
- Java言語の繰り返し制御構文 - do ... while文 - (2008/10/03 21:23)
- Java言語の繰り返し制御構文 - while文 - (2008/10/03 21:32)
- Java言語の基礎 - javacコマンドによるコンパイル - (2008/10/10 17:58)
- Java アクセス修飾子概要 - (2008/10/29 18:31)
- Javaアノテーション機能 概要 - (2009/02/12 13:06)