java - 如果字符串以字符串结尾,则从字符串中删除半冒号

use*_*653 16 java string

我有一个要求,如果它出现在String的末尾(仅在结尾处),我需要删除分号.我试过以下代码.但它仍然没有被取代.任何人都可以在行号中的以下代码中告诉我需要更改的内容
(我从这里引用代码如何从Java中的特定字符串中删除特定字符?)

public static void main(String[] args) {
    String text = "wherabouts;";
    System.out.println("SSS "+text.substring(text.length()-1));
    if(text.substring(text.length()-1) == ";"){
        text.replaceAll(";", "");
    }
    System.out.println("TEXT : "+text);
}
Run Code Online (Sandbox Code Playgroud)

Roh*_*ain 22

text.replaceAll(";", "");
Run Code Online (Sandbox Code Playgroud)

由于Java中的字符串是不可变的,因此replaceALl()方法不进行就地替换,而是返回一个新的修改后的字符串.因此,您需要将返回值存储在其他字符串中.另外,为了匹配最后的分号,你需要在$之后使用量词;

text = text.replaceAll(";$", "");
Run Code Online (Sandbox Code Playgroud)

$表示字符串的结尾,因为你想要替换最后一个semi-colon..

如果您不使用$,它将替换;您的所有字符串..

或者,对于你的工作,你可以简单地使用它,如果你想删除最后一个;:

    if (text.endsWith(";")) {
        text = text.substring(0, text.length() - 1);
        System.out.println(text);
    }
Run Code Online (Sandbox Code Playgroud)

更新:如果最后有更多的分号:

text = text.replaceAll(";+$", "");
Run Code Online (Sandbox Code Playgroud)


jah*_*roy 18

String modifiedText = text.replaceAll(";$", "");

要么

text = text.replaceAll(";$", "");

要么

if (text.endsWith(";")) {
    text = text.substring(0, text.length() - 1);
}
Run Code Online (Sandbox Code Playgroud)

注意:

字符串是不可变的.这意味着你无法改变它们.

因此,您必须重新分配文本或将其设置为新变量.