web-dev-qa-db-ja.com

文字列の最後の部分を置換

,である最後の文字列を)に置き換えたい

文字列が次のとおりだとします:

デュアル(名前、日付、

に変換される:

デュアルに挿入(名前、日付)

42
Harish

次のコードは、最後の','')'に置き換える必要があります。

StringBuilder b = new StringBuilder(yourString);
b.replace(yourString.lastIndexOf(","), yourString.lastIndexOf(",") + 1, ")" );
yourString = b.toString();

これは、String','が含まれていない場合に例外をスローします。

72
jjnguy

正規表現を使用できます:

String aResult = "Insert into dual (name,date,".replaceAll(",$", ")");

replaceAll(...)は、指定された正規表現(パラメーター1)の文字列stringに一致します(この場合、最後の文字がコンマの場合は一致します)。置換(パラメータ2)(この場合は ')')に置き換えます。

プラス! 末尾のスペースとタブを確実に処理したい場合は、正規表現を「,\[ \t\]*$」に変更するだけです。注 '\['および '\]'はバックスラッシュなしです(適切にエスケープする方法がわかりません)。

お役に立てれば。

37
NawaMan

これは、指定された文字列の最後の部分文字列のみを置換するカスタムメソッドです。あなたに役立つでしょう:

private String replaceLast(String string, String from, String to) {
     int lastIndex = string.lastIndexOf(from);
     if (lastIndex < 0) return string;
     String tail = string.substring(lastIndex).replaceFirst(from, to);
     return string.substring(0, lastIndex) + tail;
}
17
Ivan Caderno
str = str.substring(0, str.lastIndexOf(",")) + ")";
8
sfussenegger

より読みやすい方法...文字列とその機能について学ぶために使用できます

String myString = "Insert into dual (name,date,";
String newString = "";
int length = myString.length();
String lastChar = myString.substring(length-1);

if (lastChar.contains(",")) {
    newString = myString.substring(0,length-1) + ")";
} 

System.out.println(newString);
2
ty812

必要に応じて、文字列の長さを確認し、最後の文字を確認して(長さがあれば簡単です)置き換えます。このソリューションは言語ではありません。特定。ただ常識を使用してください。

1
Dani

ApacheのStringUtils関数を使用します removeEnd()

StringUtils.removeEnd("www.domain.com", ".com")   = "www.domain"
0
Philip Miglinci

同様の検索で私はこの答えを見つけました:

https://stackoverflow.com/a/37066403/875282

ホイールを再発明しようとするのではなく、Javaメソッドを意図したとおりに使用するからです。基本的に文字列を逆読みし、StringオブジェクトのreplaceFirstメソッドを使用します。探していました。

ReplaceFirst StringメソッドとStringBufferのリバース関数に関するドキュメントは次のとおりです。 https://docs.Oracle.com/javase/8/docs/api/Java/lang/String.html#replaceFirst-Java.lang。 String-Java.lang.String-

https://docs.Oracle.com/javase/8/docs/api/Java/lang/StringBuffer.html#reverse--

ここに、私が解釈したいコードスニペットからいくつかのhtml 'pre'タグを削除するために実装した方法を示します。検索文字列も逆にして、すべてを通常のあとがきに戻すことを忘れないでください。

private String stripHtmlPreTagsFromCodeSnippet(String snippet) {
    String halfCleanSnippet = snippet.replaceFirst("<pre>", "");
    String reverseSnippet = new StringBuffer(halfCleanSnippet).reverse().toString();
    String reverseSearch = new StringBuffer("</pre>").reverse().toString();
    String reverseCleanSnippet = reverseSnippet.replaceFirst(reverseSearch, "");
    return new StringBuffer(reverseCleanSnippet).reverse().toString();
}
0
matttrach

文字列の最後の文字を_)_で置き換えるには

str = str.substring(0, str.length()-1)+")";

文字列が空またはヌルでないことを確認してください。

0
Se Song

この正規表現を試してください(^.+)b(.+$)

例(最後のb文字を置き換える)

System.out.println("1abchhhabcjjjabc".replaceFirst("(^.+)b(.+$)", "$1$2"));
0