【Java】Javaの文字列の扱い ~ String ~

■ 可変引数

サンプル

private void Sample(String... values) {

■ String.format

 * C#と同じだが、プレースホルダの形が違う(C言語のprintfの%sや%dなどと同じ)
 => C# と同じプレースホルダを使用したい場合は、以下の関連記事を参照のこと。
http://blogs.yahoo.co.jp/dk521123/34011538.html

サンプル

String value = String.format("Hello World %s!!", "Mike");

プレースホルダ

 * %n : 改行コード(機種依存)
 * 「%」自体:「%%」

「X$」

 * 「X$(X:数字)」は、引数の番号を指定できる

以下のような問題(例外「d != java.lang.String」が発生)が起こった
http://blogs.yahoo.co.jp/dk521123/32205469.html

■ String.join

Java1.7以前

 * 基本ないらしいが、Apacheなどのライブラリを組み込めば可能らしい

Java1.8以降

 * 標準であるらしい

■ 文字列の連結 : StringBuilder/StringBuffer

 * StringBuilder と StringBuffer があるが、基本はStringBuilderでいい
 (差は、スレッドセーフかどうか)

■ 文字列の区切り

 * String.splitを使用する

使用上の注意

 * ドット「.」を区切りにする場合、エスケープ「"\\."」する必要がある。
 * 以下の関連記事を参照のこと
http://blogs.yahoo.co.jp/dk521123/33742935.html
 * 複雑な文字列の分割・抽出については、以下の関連記事を参照のこと。
http://blogs.yahoo.co.jp/dk521123/36604177.html
サンプル
public class Main {
   public static void main(String[] args) {
      String ipv4 = new String("127.0.0.1");
      String[] results = ipv4.split("\\.");
      for (String result : results) {
         System.out.println("Result : " + result);
      }
      System.out.println("Done");
   }
}

■ 数値の文字列化

String.valueOf

 * 数値→文字列への変換

 ※ valueOf は、文字列から他のデータ型にするにも役立つ

 ex1 Boolean isFalut = Boolean.valueOf("false");
サンプル
String value = String.valueOf(100.01);

0埋めする

 * (String.format("%XXd", 【数値】)を利用する
http://write-remember.com/program/java/format/
サンプル
System.out.println(String.format("%05d", 1));
System.out.println(String.format("%05d", 123));.0%");
出力
00001
00123

数値をフォーマットする

 * DecimalFormat を利用する
http://java-reference.sakuraweb.com/java_number_format.html
サンプル
DecimalFormat df1 = new DecimalFormat("#,###.##");
System.out.println(df1.format(123456789.4567));

DecimalFormat df2 = new DecimalFormat("#0.0%");
System.out.println(df2.format(0.56789));
出力
123,456,789.46
56.8%

数値を16進数(文字列)にする

■ 方法1
 * Integer.toHexString を利用する
http://java-reference.sakuraweb.com/java_number_hexa.html
サンプル
System.out.println(Integer.toHexString(10));
出力
a

■ 方法2
 * String.format("%0YYX", ...) を利用する
 ⇒ 桁数を一定にしたい場合に使う
http://d.hatena.ne.jp/d-kami/20120609/1339238058
サンプル
* 16桁を指定して、10を16進数で出力する
System.out.println(String.format("%016X", 10));
System.out.println(String.format("%016x", 10));
出力
000000000000000A
000000000000000a
注意
 * 指定する際に、大文字「%03X」か小文字「%03x」で、出力される値が変わることに注意

■ 方法3
 * DatatypeConverter.printHexBinary(); を利用する
http://weblabo.oscasierra.net/java-hex-convert-1/

関連記事

MessageFormat ( vs String.format() )

http://blogs.yahoo.co.jp/dk521123/34011538.html

正規表現 [4] 文字列の抽出 ~Matcher.group() ~

http://blogs.yahoo.co.jp/dk521123/36604177.html