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

2022-09-02 22:55:11

我有一个要求,如果分号存在于字符串的末尾(仅在末尾),我需要删除分号。我尝试了以下代码。但它仍然没有被取代。任何人都可以告诉我需要在行号
的以下代码中更改什么(我从这里引用了代码 如何从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);
}

答案 1
text.replaceAll(";", "");

由于 Java 中的字符串是不可变的,因此 method 不执行就地替换,而是返回一个新的修改字符串。因此,您需要将返回值存储在其他字符串中。另外,要匹配末尾的分号,您需要在后面使用量词replaceALl()$;

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

$表示字符串的末尾,因为您要替换最后一个 .。semi-colon

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

或者,对于您的工作,如果您想删除最后一个:;

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

更新:而且,如果末尾有更多的分号:

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

答案 2

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

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

if (text.endsWith(";")) {
    text = text.substring(0, text.length() - 1);
}

注意

字符串是不可变的。这意味着您无法更改它们。

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