トップページ -> 実践知識 -> Java プログラミング入門 -> 文字列処理(文字列の比較,大文字小文字を区別しない比較,トークンの切り出し)
[サイトマップへ]  

文字列処理(文字列の比較,大文字小文字を区別しない比較,トークンの切り出し)

サイト構成 連絡先,業績など 実践知識 データの扱い コンピュータ 教材 サポートページ

String (固定長の文字列),StringBuffer (可変長の文字列) を使うJava プログラム


1行単位で読み込み(BufferReader クラスの readLine メソッドを使用)

参考Webページ: http://www.atmarkit.co.jp/fjava/rensai2/jspservlet07/jspsevlet07_1.html


StringBufferに入力したデータを溜め込み出力するプログラム

input "データ"と打ち込むことでデータをStringBufferに入力し、outputと打 ちこむことでこれまでに入れた全データを画面に出力する。deleteと打ち込むと 入力したデータを全て削除する。helpと打ち込むとコマンドリストが画面に出力 され、quitと打ち込むと終了する。

プロジェクトを作成

以下の3つのjavaファイルを作成(パッケージ名はhoge.hoge.comとつける)

javaファイル名: HelloWorld.java, command_line.java, test.java test.javaをクリックし, 実行→実行→JUnitテスト(もしくは Alt+Shift+X を 押した後 T を押す)

HelloWorld.java

package hoge.hoge.com;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class HelloWorld {
	public static void main(String[] args) {
		try{
			String text;
			StringBuffer sb = new StringBuffer();
			BufferedReader buf =
				new BufferedReader(new InputStreamReader(System.in));
			System.out.println("入力してください:(ヘルプ:help) ");
			command_line cl = new command_line();
			while(true){
				System.out.print("> ");
				text=buf.readLine();
				if(cl.return_value(text,sb)==0)break;
			}
		}	
		catch(IOException e) {
			System.out.println("IO Error");
			System.exit(1);
		}
	}
}

command_line.java

package hoge.hoge.com;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class command_line {
	public int return_value(String text, StringBuffer sb){

			String command, value;
			StringTokenizer st;

			if(text.equals(""))return -1;
			st = new StringTokenizer(text, " ");
			command = st.nextToken();
			if(command.compareTo("quit")==0)return 0;
			else if(command.compareTo("help")==0){
				System.out.println("コマンド一覧 ");
				System.out.println(" ヘルプ     :help");
				System.out.println(" 終了      :quit");
				System.out.println(" データ入力   :input \"データ\" ");
				System.out.println(" 全データ出力 :output");
				System.out.println(" 全データ削除 :delete");
				return 1;
			}
			else if(command.compareTo("input")==0){
				if(st.hasMoreTokens()==true){
					value = st.nextToken();
					sb.append(value+'\n');
				}
				return 2;
			}
			else if(command.compareTo("output")==0){
				System.out.print(sb);return 3;}
			else if(command.compareTo("delete")==0){
				sb.delete(0, sb.length());return 4;}

		return -1;
	}
}

test.java (単体テスト用)

package hoge.hoge.com;

import junit.framework.TestCase;

public class test extends TestCase {
	public void test_no_input() {
		StringBuffer sb = new StringBuffer();
		command_line cl = new command_line();
		assertTrue(cl.return_value("",sb)==-1);
	}
	public void test_quit() {
		StringBuffer sb = new StringBuffer();
		command_line cl = new command_line();
		assertTrue(cl.return_value("quit",sb)==0);
	}
	public void test_help() {
		StringBuffer sb = new StringBuffer();
		command_line cl = new command_line();
		assertTrue(cl.return_value("help",sb)==1);
	}
	public void test_inout() {
		StringBuffer sb = new StringBuffer();
		command_line cl = new command_line();
		assertTrue(cl.return_value("input asdf",sb)==2);
		assertTrue(cl.return_value("output",sb)==3);
		assertTrue(sb.toString().equalsIgnoreCase("asdf\n"));
	}
	public void test_delete() {
		StringBuffer sb = new StringBuffer();
		command_line cl = new command_line();
		assertTrue(cl.return_value("delete",sb)==4);
	}
}

文字列比較プログラム

プログラムの内容

2つの文字列を入力して、文字列比較を行う。 同じであればtrue、違っていればfalseを返す。

package hoge.hoge.com;

import java.io.*;

public class stringtest {

	/**
	 * @param args
	 */
	public static void main(String[] args) throws IOException {
		BufferedReader br =
		      new BufferedReader(new InputStreamReader(System.in));

		System.out.println("文字列A");
		String strA = br.readLine();
		System.out.println("文字列B");
		String strB = br.readLine();
		if (strA.equals(strB)) {
		    System.out.println("true");
		} else {
		    System.out.println("false");
		}
	}
}

期待される結果

文字列A
ABC
文字列B
ABC
true

キーボードからの入力を読み取り、出力する。

コンソール画面においてキーボードからの入力を読み取り、 StringBufferに蓄える。最終的に入力した結果を出力する。

ファイル:TestProj3.java, TestProj3Test.java

TestProj3.java

JUnitによるテスト

TestProj3Test.java

TestProj3.java

package hoge.hoge.com;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class TestProj3 {
	public static String get_string() throws IOException {
        BufferedReader r = new BufferedReader(new InputStreamReader(System.in), 1);
        System.out.println("input string:");
        System.out.print(">");
        System.out.flush();
        String s = r.readLine();
        return s;
    }
	
	public static StringBuffer set_buffer() throws IOException {
		// TODO Auto-generated method stub
		StringBuffer buf = new StringBuffer();
		String str;
		System.out.println("roop (finish is \"\").");
		while(true){
			str = get_string();
			if(str.equalsIgnoreCase("")) break;
			//else buf.append("\t").append(str).append("\n");
			else{
		        System.out.println("you input \"" + str + "\".");
				buf.append("\t" + str + "\n");
			}
		}
        System.out.println("finish input.");
        return buf;
	}
	
	public static void main(String[] args) throws IOException {
		// TODO Auto-generated method stub
		StringBuffer buf = set_buffer();
		if(buf.length() != 0){
        	System.out.println("record:");
        	System.out.print(buf);
        }
        else System.out.println("record:no string was input.");
		
        return;
	}
}

TestProj3Test.java

package hoge.hoge.com;

import java.io.IOException;

import junit.framework.TestCase;

public class TestProj3Test extends TestCase {

	public void testString() throws IOException {
		System.out.println("check get_string() :: input \"abc\".");
		String str = TestProj3.get_string();
		assertNotNull(str);
		assertEquals(str, "abc");
		System.out.println("");
	};
	
	public void testStingBuffer() throws IOException {
		System.out.println("check set_buffer() :: input \"abc\" and \"def\".");
		StringBuffer str = TestProj3.set_buffer();
		assertNotNull(str);
		assertEquals(str.toString(), "\t" + "abc" + "\n" + "\t" + "def" + "\n");
		System.out.println("");
	};
}