解析して値を取得したい長い文字列があります。パターンを使うことを考えていましたが、少し錆びています。
これは私が興味を持っている文字列の一部です:
...沈没は44%成功します...
「沈む」という言葉がキーワードです。パーセンテージ値(この場合は44%)を取得しようとしています
最善の方法は何ですか?ありがとうございました。
**「なります」という言葉は変わる可能性があります。
解析して値を取得したい長い文字列があります。パターンを使うことを考えていましたが、少し錆びています。
これは私が興味を持っている文字列の一部です:
...沈没は44%成功します...
「沈む」という言葉がキーワードです。パーセンテージ値(この場合は44%)を取得しようとしています
最善の方法は何ですか?ありがとうございました。
**「なります」という言葉は変わる可能性があります。
常にこの種の文字列である場合の簡単な解決策:
String splitMe = "...sinking will be 44% successful...";
String strPercents = splitMe.split(" ")[3];
System.out.println(strPercents);//test output
それ以外の場合:優れた正規表現リソース http://www.vogella.com/articles/JavaRegularExpressions/article.html#examples
正規表現の解決策は次のとおりです。
String str = "...sinking will be 44% successful...";
Pattern p = Pattern.compile( "sinking will be (\\S*) successful" );
Matcher m = p.matcher( str );
if ( m.find() ) {
String percent = m.group( 1 );
}
パーセントの数値だけが必要な場合は、パターンを次のように変更します。
"sinking will be (\\d*)% successful"
上記のテキストのいずれかが無関係である場合は、行のパーセントを取得するだけで、次のパターンを使用します。
"(\\d*%)"
編集:キーワードが「沈んでいる」で、この単語の後の最初のパーセンテージ値が必要な場合、これはあなたのパターンになります:
"sinking(?:[\\w\\s]*) (\\d+%)"
あなたが知っている限り、テキストは常に「沈む」で始まり、%は常にそこにありますこれはそれを囲むテキストに関係なく機能します
String s = "more text more text sinking will be 44% successful more text";
String find = "sinking will be ";
int findIndex = s.indexOf(find) + find.length();
int pctIndex = s.indexOf("%", findIndex);
String result = s.substring(findIndex , pctIndex);