String text = "select ename from emp";
からの単語の後のスペースインデックスを知りたいです。どうやってするの?
非常に基本的な答えは次のようになります...
String text = "select ename from emp";
text = text.toLowerCase();
if (text.contains("from ")) {
int index = text.indexOf("from ") + "from".length();
System.out.println("Found space @ " + index);
System.out.println(text.substring(index));
} else {
System.out.println(text + " does not contain `from `");
}
または、正規表現を使用することもできます(これはかなり悪い例ですが、干し草です)
Pattern pattern = Pattern.compile("from ");
Matcher matcher = pattern.matcher(text);
String match = null;
int endIndex = -1;
if (matcher.find()) {
endIndex = matcher.end();
}
if (endIndex > -1) {
endIndex--;
System.out.println("Found space @ " + endIndex);
System.out.println(text.substring(endIndex));
} else {
System.out.println(text + " does not contain `from `");
}
各スペースのインデックスを見つけるには、次のようなことを行うことができます...
Pattern pattern = Pattern.compile(" ");
Matcher matcher = pattern.matcher(text);
String match = null;
while (matcher.find()) {
System.out.println(matcher.start());
}
どちらが出力されます
6
12
17
「from」という単語の後の最初のスペースのインデックスを具体的に探している場合は、次を使用できます。
text.substring(text.indexOf("from")).indexOf(' ');
より一般的なことをしようとしている場合は、もう少し情報を提供する必要があります。しかし、indexOf()メソッドはおそらく非常に便利です。
編集:これは実際には
text.indexOf(' ', text.indexOf("from"));
最初のバージョンは「from」に関連するインデックスを返しますが、2番目のバージョンは元の文字列に関連するインデックスを返します。(@jpmに感謝)
このループは、指定された文字列内のすべてのスペース文字を検索します。
int index = text.indexOf(' ');
while (index >= 0) {
System.out.println(index);
index = text.indexOf(' ', index + 1);
}
indexOf()メソッドを使用します。あなたが答えを得たことを願っています