文字列処理(文字列の比較,大文字小文字を区別しない比較,トークンの切り出し)(Java を使用)
- Javaのページ
- Javaプログラミング用語集のページ
【関連情報】
Java 25(Temurin 25 JDK) のインストール
Eclipse Temurin(Adoptium)のインストールを行い、Javaのプログラムをコンパイル・実行する環境を整える。扱う環境は、Windows搭載パソコンである。現時点(2026年6月)での最新LTS版である Java 25(Temurin 25 JDK)を推奨する。
[Windows での Java 25(Temurin 25 JDK) のインストール手順を見るには、ここをクリック]
Windows での Java 25(Temurin 25 JDK) のインストール
以下のいずれかの方法で Java 25(Temurin 25 JDK)をインストールする。JDKがインストール済みの場合、この手順は不要である。
方法 1:winget によるインストール
【インストールコマンドの実行方法】
管理者権限でコマンドプロンプトを起動する(手順:Windowsキーまたはスタートメニュー → cmd と入力 → 右クリック → 「管理者として実行」)。そして、コマンド全体をコマンドプロンプトにコピー&ペーストする。
Temurin の Windows インストーラー(.msi)は、ユーザー単位ではなくマシン単位でインストールされる(1台に1つのインストール)。そのため、システム全体(全ユーザー向け)にインストールするには管理者権限が必要である。インストール完了後、コマンドプロンプトを再起動するとPATHが反映される。
REM Java 25(Temurin 25 JDK) をインストール(PATH と JAVA_HOME を更新)
winget install --id EclipseAdoptium.Temurin.25.JDK -e --silent --accept-source-agreements --accept-package-agreements --override "ADDLOCAL=FeatureMain,FeatureEnvironment,FeatureJarFileRunWith,FeatureJavaHome INSTALLDIR=\"C:\Program Files\Eclipse Adoptium\jdk-25\" /quiet"
上記の --override 内の指定の意味は次のとおりである。FeatureEnvironment はPATH環境変数の更新、FeatureJavaHome は JAVA_HOME 環境変数の更新、FeatureJarFileRunWith は .jar ファイルとJavaアプリケーションの関連付けである。INSTALLDIR はインストール先フォルダの指定である。
方法 2:インストーラーによるインストール
- Adoptium公式サイト(https://adoptium.net/temurin/releases/)にアクセスし、Version として「25 - LTS」、Operating System として「Windows」を選び、
.msi形式のWindows用インストーラーをダウンロードする。 - ダウンロードした
.msiファイルを実行し、インストールプログラムを起動する。 - ライセンス条項を確認し、同意できる場合はチェックを入れて次へ進む。
- 「Installation Scope」画面では「Install for all users of this machine」を選ぶ
- 「Custom Setup(カスタムセットアップ)」画面で、インストールする機能を選択する。既定では「Add to PATH(PATH環境変数への追加)」と「Associate .jar」(.jarファイルの関連付け)が有効になっている。さらに、ツリー内でバツ印(×)が付いている「Set JAVA_HOME variable(JAVA_HOME環境変数の更新)」をクリックして有効に変更することを推奨する。これらを有効にしないと、コマンドプロンプトから
javaコマンドを実行できなかったり、開発ツールがJDKを見つけられなかったりする。 - 「次へ (Next)」をクリックし、続いて「インストール (Install)」をクリックしてインストールを開始する。完了後「Finish」で閉じる。
インストールの確認
コマンドプロンプトで以下を実行する。
java --version
バージョン番号(例:openjdk 25.x.x)が表示されればインストール成功である。「'java' は、内部コマンドまたは外部コマンドとして認識されていません。」と表示される場合は、インストールが正常に完了していないか、PATHが反映されていない(コマンドプロンプトを再起動して再度確認する)。
あわせて、コンパイラと JAVA_HOME も確認しておくとよい。
javac --version
echo %JAVA_HOME%
Eclipse のインストール
Eclipse をインストールする。扱う環境は、Windows搭載パソコンである。
Windows での Eclipse のインストール 以下のいずれかの方法で Java 25(Temurin 25 JDK)をインストールする。JDKがインストール済みの場合、この手順は不要である。 方法 1:winget によるインストール 【インストールコマンドの実行方法】 管理者権限でコマンドプロンプトを起動する(手順:Windowsキーまたはスタートメニュー → winget が使えない場合や,インストール先・パッケージ種類を画面で選びながら導入したい場合は,次の方法を用いる。 方法 2:インストーラーによるインストール 公式サイトからダウンロードしてインストールできる。詳しくはhttps://www.kkaneko.jp/tools/win/eclipse.htmlで説明している。 Eclipse の初期設定、使用方法の基本 詳しくはhttps://www.kkaneko.jp/tools/win/eclipse.htmlで説明している。[Windows での Eclipse のインストール手順を見るには、ここをクリック]
cmd と入力 → 右クリック → 「管理者として実行」)。そして,コマンド全体をコマンドプロンプトにコピー&ペーストする。REM Temurin 25 JDK をインストール
winget install --id EclipseAdoptium.Temurin.25.JDK -e --accept-source-agreements --accept-package-agreements
文字列比較プログラム
プログラムの内容
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