文字列処理(文字列の比較,大文字小文字を区別しない比較,トークンの切り出し)(Java を使用)
【サイト内の Java 関連の資料】
文字列比較プログラム
プログラムの内容
2つの文字列を入力して、文字列比較を行う。 同じであればtrue、違っていればfalseを返す。
import java.io.*;
public class Main {
/**
* @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");
}
}
}
【Windows での実行】
Windows で,ファイル Main.java を編集し実行するために,次のコマンドを, コマンドプロンプトで実行する.
cd %LOCALAPPDATA%
notepad Main.java
javac -encoding UTF-8 Main.java
java Main

StringBufferに入力したデータを溜め込み出力するプログラム
input "データ"と打ち込むことでデータをStringBufferに入力し、outputと打 ちこむことでこれまでに入れた全データを画面に出力する。deleteと打ち込むと 入力したデータを全て削除する。helpと打ち込むとコマンドリストが画面に出力 され、quitと打ち込むと終了する。
プロジェクトを作成
以下の3つのjavaファイルを作成.
javaファイル名: HelloWorld.java, command_line.java, test.java test.javaをクリックし, 実行→実行→JUnitテスト(もしくは Alt+Shift+X を 押した後 T を押す)
Main.java
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
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
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 (単体テスト用)
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);
}
}
【Windows での実行】
Windows で,ファイル Main.java, command_line.java, test.java を編集し実行するために,次のコマンドを, コマンドプロンプトで実行する.
cd %LOCALAPPDATA%
notepad Main.java
notepad command_line.java
notepad test.java
javac -encoding UTF-8 Main.java
javac -encoding UTF-8 command_line.java
javac -encoding UTF-8 test.java
java Main

キーボードからの入力を読み取り、出力する。
コンソール画面においてキーボードからの入力を読み取り、 StringBufferに蓄える。最終的に入力した結果を出力する。
ファイル:Main.java, MainTest.java
Main.java
- get_string() コンソール画面から文字列を読み取る。
- set_buffer() get_string()関数で読み取った文字列を蓄える。 whileループで動作し、Enterキーのみを押した際に終了。
- main() set_buffer()関数で蓄えたStringBufferを文字列として出力。
JUnitによるテスト
MainTest.java
- testString() get_string()関数をテストする関数。 入力された文字列を"abc"と比較判定する。
- testStringBuffer() set_buffer()関数をテストする関数。 入力された結果が"abc", "def"となっているか比較判定する。
Main.java
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
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;
}
}
MainTest.java
import java.io.IOException;
import junit.framework.TestCase;
public class MainTest extends TestCase {
public void testString() throws IOException {
System.out.println("check get_string() :: input \"abc\".");
String str = Main.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 = Main.set_buffer();
assertNotNull(str);
assertEquals(str.toString(), "\t" + "abc" + "\n" + "\t" + "def" + "\n");
System.out.println("");
};
}
【Windows での実行】
Windows で,ファイル Main.java, MainTest を編集し実行するために,次のコマンドを, コマンドプロンプトで実行する.
cd %LOCALAPPDATA%
notepad Main.java
notepad MainTest.java
javac -encoding UTF-8 Main.java
java Main
