如何用特定字符替换2个特定字符

时间:2016-04-16 21:28:33

标签: java algorithm replaceall

我正在尝试改变角色; aa到å,ae到ä和oe到ö。

我的输入文本文件是

“sjoen aer varmt idag kanske kommer vi att simma daer。 Det aer vaeldigt roligt att simma daer。 Minmammasäger直到mig att daer aer alltid kallt och att aaka tid tar mycket tid。“

输出应该是这样的:

“sjönärvarmtidag kanske kommer vi attsimmadär。 Detärväldigtroligtattsimmadär。 Minmammasäger,直到他们发生了一件事,请点击mycket tid。“

我的问题是我做错了什么? 感谢您的帮助和评论。

这是我的代码

public static void main(String[] args) throws IOException {

    String fileName = JOptionPane.showInputDialog("Enter the file name");



        BufferedReader inputCurrent  = new BufferedReader(new FileReader(fileName));
        PrintWriter outputCurrent = new PrintWriter(new BufferedWriter(new FileWriter("file.txt")));
        String row1;

        while((row1 = inputCurrent.readLine())!=null)
        {
            String aa = "å";
            String ae = "ä";
            String oe = "ö";


            if(row1.equals(aa))
            {
                String replacing  = row1.replaceAll(row1, aa);
                outputCurrent.println(replacing);
            }

            if(row1.equals(ae))
            {
                String replacing  = row1.replaceAll(row1, aa);
                outputCurrent.println(replacing);
            }

            if(row1.equals(oe))
            {
                String replacing  = row1.replaceAll(row1, aa);
                outputCurrent.println(replacing);
            }


        }
        outputCurrent.close();
        inputCurrent.close();


        inputCurrent  = new BufferedReader(new FileReader("file.txt"));
        outputCurrent = new PrintWriter(new BufferedWriter(new FileWriter(fileName)));
        while(true)
        {
            String row2 = inputCurrent.readLine();
            if(row2==null)
                break;
            outputCurrent.println(row2);
        }
        outputCurrent.close();
        inputCurrent.close();
    }
}

2 个答案:

答案 0 :(得分:2)

replaceAll将模式作为第一个参数。您应该使用replace。此外,您正在寻找equals,而您应该contains这样做:

if(row1.contains("aa"))
    row1.replace("aa", aa);

但是这样它会将所有“aa”事件替换为å

请参阅此代码:

String input = "sjoen aer varmt idag kanske kommer vi att simma daer. "
        + "Det aer vaeldigt roligt att simma daer. "
        + "Min mamma säger till mig att daer aer alltid kallt och att aaka tid tar mycket tid.";
String output = "sjön är varmt idag kanske kommer vi att simma där. "
        + "Det är väldigt roligt att simma där. "
        + "Min mamma säger till mig att där är alltid kallt och att åka tid tar mycket tid.";

input = input.replace("aa", "å").replace("ae", "ä").replace("oe", "ö");

System.out.println(input);
//prints
//sjön är varmt idag kanske kommer vi att simma där. 
//Det är väldigt roligt att simma där. 
//Min mamma säger till mig att där är alltid kallt och att åka tid tar mycket tid.
System.out.println(input.equals(output));//true

答案 1 :(得分:0)

使用方法可能会更有效,更好。正如我说的那样,我很开心并感谢你的帮助。

String fileName = JOptionPane.showInputDialog("Enter the file name");

 BufferedReader inputCurrent  = new BufferedReader(new FileReader(fileName));
    PrintWriter outputCurrent = new PrintWriter(new BufferedWriter(new FileWriter("file.txt")));
    String row1;
    String replacing = null;
    String å,ä,ö;

    while((row1 = inputCurrent.readLine())!=null)
    {
        String aa = "å";
        String ae = "ä";
        String oe = "ö";


        if(row1.contains("aa"))
        {
            row1  = row1.replaceAll("aa", aa);

        }


        if(row1.contains("ae"))                 {
            row1  = row1.replaceAll("ae", ae);

        }

        if(row1.contains("oe"))
        {
            row1  = row1.replaceAll("oe", oe);

        }
        outputCurrent.println(row1);


    }
    outputCurrent.close();
    inputCurrent.close();


    inputCurrent  = new BufferedReader(new FileReader("file.txt"));
    outputCurrent = new PrintWriter(new BufferedWriter(new FileWriter(fileName)));
    while(true)
    {
        String row2 = inputCurrent.readLine();
        if(row2==null)
            break;
        outputCurrent.println(row2);
    }
    outputCurrent.close();
    inputCurrent.close();
}

}