PHASE2 LOG

主にIT関連・ゲームのログ

Javaのお勉強~文字列の操作~

   

Javaに用意されている文字列を活用できるメソッドをお勉強します。

Stringクラスのメソッド

 

文字列を扱うStringクラスには文字列を操作するためのメソッドがあります。

 

length()メソッド

→文字列の長さを取得することができます。

 

substring()メソッド

→インデックス番号で0から数えて、指定した文字を返します。

 

compareTo()メソッド

→文字列を辞書順で比較します。比較元が比較先より前なら負の数を、同じなら0を、

後なら正の数を返します。

ちなみに「compare」には比較するという意味があります。

 

それではこの3つのメソッドを実際に使ってみましょう。

public class StrOpe {
	public static void main(String[] args){
		String Month = "March";
		
		//Marchの文字列の長さを取得
		int len = Month.length();
		System.out.println(len);
		
		//Monthに格納されているの文字列の1~3番目の文字列を取得(0はじまり)
		String sub = Month.substring(1,3);
		System.out.println("sub");
		
		//MarchとNumberを比較
		String num ="Number";
		int comp = Month.compareTo(num);
		
		//辞書順で比較して負,0,正で結果を返す
		System.out.println(comp);
	}
}

 

length()メソッドを使うと、変数Monthには「March」という5文字の文字列が格納されているので

結果として5が返却されます。

 

substring()メソッドを使うと、引数に渡した「1,3」で「1番目から3-1番目(つまり2番目)まで」

の文字列を返します。

0番目から数えるので文字列「March」の1番目から2番目までの結果は「ar」となります。

 

compareTo()メソッドを使って文字列「March」と「Number」を比較していますね。

比較元のMarchは辞書順ではNumberより前ということになるので結果として「-1」を返します。

 

ここで疑問に思ったのは負の数って必ず「-1」なの?ってことです。(正の数も同様に。)

ここはもうちょっと調べてみます。

文字列を分割するクラス

 

StringTokenizerクラスを使用すると文字列を分割することができます。

分割した文字列のことをトークンといいます。

 

記述の仕方は以下のようになります。


StringTokenizer オブジェクト名 = new StringTokenizer("分割したい文字列" , "区切り文字");

 

指定した区切り文字の場所で区切ることができます。

区切り文字を省略するとスペースの場所で区切るようになります。

 

StringTokenizerクラスには以下のメソッドも用意されています。

  • hasmoreTokens()メソッド:トークンがあればtrueを返却
  • nextToken()メソッド:トークンを順に返却

では実際の例を見てみましょう。

//StringTokenizerクラスをインポート
import java.util.StringTokenizer;

public class Token {
	public static void main(String[] args){
		//スペースで文字を分割
		StringTokenizer Fashion = new StringTokenizer("T-shirt Jeans Shoes");
		//「,」で文字を分割
		StringTokenizer Price = new StringTokenizer("3000,5000,7000" , ",");
		
		//Fashionのトークンを順番に取得
		String tok = Fashion.nextToken();
		//Priceのトークンを順番に取得してint型へ変換
		int sum = Integer.parseInt(Price.nextToken());
		
		//Fashionにトークンがある間繰り返す
		while(Fashion.hasMoreTokens()){
			//取得したトークンを連結していく
			tok = tok + "&" + (Fashion.nextToken());
			//取得してint型に変換した値を合計していく
			sum = sum + Integer.parseInt(Price.nextToken());
		}			
		System.out.println(tok + "=" + sum);		
	}
}

 

Fashionオブジェクトでは文字列「T-shirt Jeans Shoes」をスペースで区切っていますね。

Priceオブジェクトでは文字列「3000,5000,7000」を区切り文字「,」で区切るように指定しています。

 

nextToken()メソッドでトークン(区切った文字)を取得しています。

でも1回だけでは1番目に区切られた文字しか取得できません。

 

そこでhasmore()メソッドを使用してトークンがこれ以上存在している場合は

while文を通るようになっています。

 

Priceオブジェクトの数字も文字列なのでparseInt()メソッドを使って

数値型であるint型へ変換しているので計算が可能となります。

 

結果としては次のようになります。

T-shirt&Jeans&Shoes=15000

 

用途がつかめれば色々と応用できそうですね!

 

 

人気ブログランキング

 -