如果字符串的前缀和后缀相同,则删除字符串的后3个字符

时间:2019-08-15 15:31:23

标签: java string compare prefix suffix

如果字符串具有相同的前缀和后缀,我想删除字符串的后3个字符。例如:字符串是"systemsys",它应该显示system。我尝试输入的内容很少:incgoogleinc。不适用于此输入

import java.util.*;
public class Main {
    public  static void main(String[] args) {
    Scanner s = new Scanner(System.in);
    String str = s.nextLine();
    if(str.length() > 3) { 
    if (str.startsWith(str.substring(0, 3)) == (str.substring(str.length()-3, str.length()-1))) {
        System.out.println(str.substring(0, str.length()-3));    
    } else {
        System.out.println(str);
}}}

不适用于其他输入:mictestingmiccomwebsitecom

2 个答案:

答案 0 :(得分:2)

if (str.startsWith(str.substring(0, 3)) == (str.substring(str.length()-3, str.length()-1))) {

str.startsWith(str.substring(0, 3))返回一个布尔值(由于您要问它是否以字符串的开头开始(总是如此),所以它总是正确的。)

str.substring(str.length()-3, str.length()-1))

对于“ mictestmic”,由于substring()使用包含/排除范围,因此它将返回“ mi”。

因此,您的if语句的计算结果为:

if (true == "mi") {

相反,只需检查字符串是否以结尾开头:

if (str.startsWith(str.substring(str.length()-3))) {

答案 1 :(得分:1)

我不知道您是否可以在作业中使用正则表达式,但这在这里很方便:

String input = "mictestingmic";
if (input.matches("(.+).*\\1")) {
    input = input.substring(0, input.length()-3);
}

System.out.println(input);

这将打印mictesting,删除最后三个字符,但是mictestingcan将打印相同的输入,因为它确实具有匹配的前缀和后缀。