文字列の処理 BACK

UNICODE 文字コード Sun Documents Sun Java2 API仕様

文字列から数値型への変換
int型 a=Integer.parseInt(str)
short型 a=Short.parseShort(str)
byte型 a=Byte.parseByte(str)
long型 a=Long.parseLong(str)
float型 a=Float.parseFloat(str)
double型 a=Double.parseDouble(str)
byte配列から文字列への変換
変換 byte a[] = new byte[2];
a[0]=0x31:
a[1]=0x32;
String b = new String(a,0,2);
char/ASCIIコードから文字への変換(Aには、1文字の"A"が格納されます。)
変換 char a[] = {(char)(0x41)};
String A = new String(a)
charから文字コードへの変換(aaaには、0x42が格納されます。)
変換
String A = "B";
char AA[] = A.toCharArray();
int aaa = AA[0];

数値から文字列への変換
int型 String s1=String.valueOf(intvalue)
short型 String s1=String.valueOf(shortvalue)
byte型 String s1=String.valueOf(bytevalue)
long型 String s1=String.valueOf(longvalue)
float型 String s1=String.valueOf(floatvalue)
double型 String s1=String.valueOf(doublevalue)

String型操作クラス
s2=new String(s1) 文字列のコピー
s2=new s1.toString() 文字列のコピー
s1.equals(s2) 文字列の比較(==での比較は×)
s1=s1.concat(s2) 文字列の結合1
s1=s2+"abc" 文字列の結合2
s1.equalsIgnoreCase(s2) 大小文字を無視して比較
s1.regionMatches(p1,p2,p3,p4) 文字列の部分比較
s1.length() 文字列の長さ
s1.charAt(int offset) 部分文字列(1文字)の取得
s1.substring(int start,int end) 部分文字列の取得
s1.replace(c1,c2) 文字列の置換
s1.indexOf(c1) 指定文字(列)の最初の出現位置
s1.lastIndexOf(c1) 指定文字(列)の最後の出現位置
s1.endsWith(s1) 文字列の末尾をチェック
s1.startsWith(s1)
s1.startsWith(s1,offset)
オフセットからの文字列をチェック
s1.compareTo(c1) 文字列の比較
s1.trim() 前後のスペースの削除
s1.toLowerCase() 小文字への変換
s1.toUpperCase() 大文字への変換
s1.valueOf(variable) 文字列への変換
s1.toString(stringbuffer) StringBufferから文字列への変換
s1.split(",") 文字列の分割(左の例では、","を区切りで分割)

StringBuffer型操作クラス
s1.append(s2) 文字列の連結
s1=s1.insert(offset,c1) 文字列への挿入
s1.capacity() 容量(+1の値を返す)
s1.length() 文字列の長さ
s1.setLength() 文字数の長さの設定
s1.charAt(int offset) 部分文字列(1文字)の取得
s1.length() 文字列の長さ
s1.substring(int start,int end) 部分文字列の取得
s1.replace(c1,c2) 文字列の置換
s1.indexOf(c1) 指定文字(列)の最初の出現位置
s1.lastIndexOf(c1) 指定文字(列)の最後の出現位置
s1.startsWith(s1)
s1.startsWith(s1,offset)
オフセットからの文字列をチェック
s1.endsWith(s1) 文字列の末尾をチェック
s1.trim() 前後のスペースの削除
s1.toLowerCase() 小文字への変換
s1.toUpperCase() 大文字への変換
s1.valueOf(variable) 文字列への変換
s1.toString(stringbuffer) StringBufferから文字列への変換

StringTokenizerの使用例
Source import java.util.*;

public class Test_1 {
    public static void main(String[] args) {

        String s1 =
"1,2,3,4,5";
        String s2 =
",2,3,4,";
        String s3 =
"1,,3,,";

        String s11 = CnvStr(s1);
        StringTokenizer ST1 = new StringTokenizer(s11,",");
        int c1 = ST1.countTokens();
        System.out.println("ItemCount="+c1+" [" +s1
            + "] >>> ["+s11+"]");

        String s22 = CnvStr(s2);
        StringTokenizer ST2 = new StringTokenizer(s22,",");
        int c2 = ST2.countTokens();
        System.out.println("ItemCount="+c2+" [" +s2
            + "] >>> ["+s22+"]");

        String s33 = CnvStr(s3);
        StringTokenizer ST3 = new StringTokenizer(s33,",");
        int c3 = ST3.countTokens();
        System.out.println("ItemCount="+c3+" [" +s3
            + "] >>> ["+s33+"]");
    }

    public static String CnvStr(String s) {
        if (s.startsWith(",")) s = " " + s;
        if (s.endsWith(",")) s = s + " ";
        while (s.indexOf(",,") != -1) {
            s = s.substring(0,s.indexOf(",,") +1) + " " +
                 s.substring(s.indexOf(",,") +1,s.length()) ;
        }
        return s;
    }
}
Output ItemCount=5 [1,2,3,4,5] >>> [1,2,3,4,5]
ItemCount=5 [,2,3,4,] >>> [ ,2,3,4, ]
ItemCount=5 [1,,3,,] >>> [1, ,3, , ]

splitの使用例
▲使用例
Source String a = "1,2,3,4,5";
String b[] = a.split(",");
out.print(b.length);
out.print(b[0]);
out.print(b[4]);
Output 5
1
5
▲要素が1個の場合
Source String a = "1";
String b[] = a.split(",");
out.print(b.length);
out.print(b[0]);
Output 1
1
▲要素に空がある場合
Source String a = "1,,3,4";
String b[] = a.split(",");
out.print(b.length);
out.print(b[0]);
out.print(b[1].length());
out.print(b[2]);
Output 4
1
0
3
分割された要素数=4となっている。

b[1]は、要素が空、文字列の長さ=0となる。

byte配列のlength
Source String S1    = "1,Java";
byte SendB[] = new byte[64]; <<byte配列を定義
SendB=S1.getBytes();
  <<byte配列にS1を格納(漢字は2byteで格納される。)
int S1 = SendB.
length; <<byte配列の長さを取得(10byteとなる。)

複数の空白で区切られた項目をカンマ(,)区切りに変換
Source 変換前文字列  Mem:   127692    35332   92360  0    2452 16144
変換後文字列  Mem:,127692,35008,92684,0,2436,16136


  int start;
   while((start=str.indexOf(" ")) >=0){
       StringBuffer str1 = new StringBuffer(str);
       str1 = str1.delete(start,start+1);
       str = str1.toString();
    }
    str = str.replace(' ',',');

文字列の辞書順のソート
Source
    for(i=0;i<No-1;i++){
        for(j=No-1;j>i;j--){
            if(List[j].compareTo(List[j-1]) > 0){
                Temp = List[j];
                List[j] = List[j-1];
                List[j-1] = Temp;
            }
        }
    }

Update 2010/07/31