Java文字列処理 - Stringクラス

2008/10/08 11:59Update
TAGS: Java | 文字列 | String

Javaでは、文字列を扱うには、StringやStringBuffer、StringBuilderクラスなどを用います。本文はStringクラスの基本的な使い方(文字列の生成、連結、比較、置換、変換、分割など)について学びます。

とりあえず、サンプルから見てみます。
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!


"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!

有关作者
Syboos.jp編集長AJavaやオープンソース情報の執筆、Webサイトの開発や運営全般の業務に携わる。

Sponsored Link


Comments