10.String Searching

文字列を検索する – indexOf/lastIndexOfメソッド

文字列に含まれる部分文字列を検索するには、indexOfメソッドを利用します。indexOfメソッドは、指定された部分文字列が最初に登場した位置を、文字列の先頭を0としたインデックス番号で返します。文字列が見つからなかった場合、戻り値は-1となります。
第2引数で、検索開始位置を指定することもできます。

1
2
3
String str = "にわにはにわにわとりがいる";
System.out.println(str.indexOf("にわ"));  // 結果:0
System.out.println(str.indexOf("にわ", 1));   // 結果:4

部分文字列を文字列の末尾から検索するならば、lastIndexOfメソッドを利用してください。

1
System.out.println(str.lastIndexOf("にわ"));  // 結果:6

match() 正規表現を使った検索

 正規表現を使って、文字列(String)を検索します。結果は文字列の配列として返されます。
【構文】
match(str, regexp)
【パラメータ】
str 検索対象の文字列
regexp 検索条件をあらわす正規表現
【戻り値】
String[] (一致する文字がないときはnull)

 次の例は文字列からデータを取り出します。

String t = "本日の気温は28度です";
String[] m = match(t, "([0-9]+)度");	// 「度」の前の数値を取り出す

if(m != null) {
  println("t=" + m[1]);				// 検索結果(m[1])を出力
  println(m[0]);						// 一致した文字全体(m[0])を出力
} else {
  println("不一致");
}

 

参考:

Leave a Reply

Your email address will not be published. Required fields are marked *

CAPTCHA


Related Post

5.Search5.Search

サーチ(Search)とは,複数のデータの中から特定のデータを見つけ出す作業のことです。日本語では探索や検索と呼びます。 サーチのアルゴリズムには,ランダムなデータを取り扱えるものと,ソート済みのデータを取り扱うものとがあります。 リストサーチ(list search) データのリスト構造とはA, B, C, ……のように,データが次々と連続している構造のことを言います。代表例は配列です。 そのようなリスト構造を持つデータの集合を探索するためのアルゴリズムを,ここではリストサーチと呼びます。 探索のアルゴリズム 線形探索 二分探索 ハッシュ法 線形探索 線形探索という言葉は英語のLinear Searchの直訳です。線形探索はリストの先頭から終端に向かって目的の要素を探し出すアルゴリズムです。 目的の要素であるという判定は比較によって行います。 アルゴリズム分析 リストの先頭から要素を取り出す 取り出した要素の値と探したい要素の値を比較する […]

9.Set9.Set

Set構造は、要素を順番付けしないで管理するデータ構造です。「HashSet」「TreeSet」の2種類があります。 Listのような順番付けや、Mapのようなキー管理もないため、要素の取得にはIteratorや拡張for構文で取得します。このようなことからHashSetは要素の取得順は保証されませんが、TreeSetは自動ソートされて管理されるのでソートされた順番で要素が取得されます。また、HashSetは要素にnullを使用する事が可能ですが、TreeSetはnullを使用する事ができません。Set構造は、要素の重複は不可です。(同じキーがセット(add)された場合は上書きされます。) セット(HashSet) HashSet も配列を扱いますが、要素の重複が許されない、順序の保障が無い点が ArrayList や LinkedList と異なります。要素を参照する際には Iterator を用います。 §HashSetTest.java import java.util.*; class HashSetTest { public static void […]

Algorithms and Data StructuresAlgorithms and Data Structures

授業概要  ソートとコレクションを中心にアルゴリズムとデータ構造に関する基本を学習する。 Java言語によるプログラミング技術の基本事項を習得する。 特にアルゴリズムとデータ構造の理解を中心に、講義および演習を行う。 授業の到達目標 ・オブジェクト指向言語の概念を理解するとともに、Javaを用いて課題を解決するスキルを身につける。 ・アプリケーションの開発に必要な概念を理解するとともに、Java言語を用いて実用的なWebアプリケーションの開発が行えるようになる。 事前・事後学習の内容 予習としてMyWasedaに掲載するレジュメの事前読了を求めることがあります。各回の予習には90分~120分かかると想定されます。 授業計画 1: 本講義の目的と進め方について説明する。最終的に作成するアプリケーションの実例を説明する。 2: 基本概念を理解する。Javaのインストールからコマンドライン実行の方法を学ぶ。 3: 基本的なアルゴリズムを学ぶ。 4: 基本的なデータ構造を学ぶ。 5: 探索アルゴリズムを学ぶ。 […]