有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

在java中删除字符并替换另一个字符

我试着做两件事:

  • 如果字符串以结尾且辅音在前面,则删除“S”
  • 如果字符位于两个元音之间,则替换字符串中的所有“S”

这是我现在的代码:

public class Phonias{

    static String[] consonnant={"B","C","D","F","G","H","J","K","L","P","Q","R","S","T","V","W","X","Z"};
    static String [] vowels={"A","E","I","O","U","Y"};

    public static String phonias1(final String str){

        if (str == null){
            return "null";
        }
        if(str==""){
            return "";
        }
        if (str.contains("S")){

        }
        for (int i = 0; i < consonnant.length; i++) {
            if(str.endsWith(consonnant[i]+"S") && str.length()>3){
                String temp = str.replaceAll(consonnant[i]+"S",consonnant[i]+"");
                return temp;
            }
        }
        for (int i = 0; i < vowels.length; i++) {
            if( str.contains(vowels[i]+"S"+vowels[i])){

                return str.replace("S"+vowels[i], "Z"+vowels[i]);

            }
        }
        return str;

    }
}

我所有的测试都运行良好,除了“ISISIDORET”,它返回我“ISISIDORET”


共 (1) 个答案

  1. # 1 楼答案

    在第一个循环中返回temp,因此第二个循环永远不会执行。只需更新tampon并在最后返回它。像这样:

    for (int i = 0; i < consonnant.length; i++) {
        if(tampon.endsWith(consonnant[i]+"S") && tampon.length()>3){
            tampon = tampon.replaceAll(consonnant[i]+"S",consonnant[i]+"");//supprime le "S" final s'il est situé après une consonne
        }
    }
    for (int i = 0; i < vowels.length; i++) {
        if( tampon.contains(vowels[i]+"S"+vowels[i])){
            tampon = tampon.replace("S"+vowels[i], "Z"+vowels[i]);//si le "S" précède une voyelle, remplacer par "Z" 
        }
    }
    return tampon;