1

コードを C++ から Java に変換する場合find_last_of()find_last_not_of、 などの std::string メソッドを変換する簡単な方法は何ですか?

これらの C++ メソッドは、任意の文字セットのインデックスを見つけます。

Java の String クラスはindexOf()およびlastIndexOf()を提供しますが、これらは文字または文字列のインデックスを検索し、文字のセットは検索しません。

たとえば、次のコードは、ASCII ホワイトスペースではない最後の文字を見つけます。

size_t pos = myString.find_last_not_of( " \t\n\r" );
4

3 に答える 3

5

1 つのオプションは、Guava のCharMatcherクラスを使用することです。

以下は、単一引数の find_*_of() メソッドのそれぞれについてテストされた変換です。

public int findFirstOf( String sequence, String str ) {
    return CharMatcher.anyOf( str ).indexIn( sequence );
}

public int findFirstNotOf( String sequence, String str ) {
    return CharMatcher.anyOf( str ).negate().indexIn( sequence );
}

public int findLastOf( String sequence, String str ) {
    return CharMatcher.anyOf( str ).lastIndexIn( sequence );
}

public int findLastNotOf( String sequence, String str ) {
    return CharMatcher.anyOf( str ).negate().lastIndexIn( sequence );
}

他の回答を歓迎します。find_last_not_of()[ stackoverflow などで検索しても、Javaに関するものは見つかりませんでした。そして、Guava で対応する機能を初めて検索したときに CharMatcher を見逃してしまいました。将来の使用のために、この簡単な変換を文書化したい.]

于 2013-07-08T19:32:42.717 に答える