如何在Java中替换“{{”,“}}”

时间:2017-08-28 14:05:21

标签: java

我正在尝试替换此字符“{{”我有以下读取文件的方法。

public static void  readTxtFile(){
        File archivo = null;
        FileReader fr = null;
        BufferedReader br = null;
        try {
            file= new File ("example.txt");
            fr = new FileReader (file);
            br = new BufferedReader(fr);
            String line;
            while((line=br.readLine())!=null){
                if(!line.isEmpty()&& line.replace("{{player.id}}","201566"){
                    System.out.println(line);
                }
            }

        }
        catch(Exception e){
            e.printStackTrace();
        }finally{
            try{
                if( null != fr ){
                    fr.close();
                }
            }catch (Exception e2){
                e2.printStackTrace();
            }
        }
    }

使用此方法,我读取了一个txt文件,其中包含一系列具有以下格式的URL。

http://stats.nba.com/player/#!/{{ player.id }}/

我需要将此内容 {{player.id}} 替换为 201566 ,因为我需要获取以下格式的网址。

http://stats.nba.com/player/#!/201566/

我尝试使用传统的替换但我收到布尔错误...有人可以帮助我吗?

问候!

3 个答案:

答案 0 :(得分:4)

反斜杠

line = line.replaceAll("\\{\\{\\s*player\\.id\\s*\\}\\}", "201566");

这是一个正则表达式替换。 在正则表达式中,.表示任何字符,而\.表示句点。但是,当我们处理普通字符串时,\.的反斜杠必须表示为两个反斜杠:\\

\s*代表任何空白,就像你的问题中显示的是一个空格。

没有正则表达式:

line = line.replace("{{ player.id }}", "201566");

注意空间;它们必须与文件中的完全一样。

答案 1 :(得分:3)

这是人们在使用String时常犯的常见错误。

Java-String是不可变的。这意味着调用String上的任何方法都不会更改其内容。在你的情况下,这意味着:

String str = "...{{ foo }}...";
str.replace("foo", "bar");

不会导致str == "...{{ bar }}..."
您必须将replace(...)的结果分配给String

String str = "...{{ foo }}...";
str = str.replace("foo", "bar");

答案 2 :(得分:1)

试试这个:

public static void  readTxtFile(){
        File archivo = null;
        FileReader fr = null;
        BufferedReader br = null;
        try {
            file= new File ("example.txt");
            fr = new FileReader (file);
            br = new BufferedReader(fr);
            String line;
            while((line=br.readLine())!=null){
                if(!line.isEmpty()&& line.contains("{{player.id}}"){
                    line = line.replaceAll("\\{\\{\\s*player\\.id\\s*\\}\\}", "201566");
                    System.out.println(line);
                }
            }

        }
        catch(Exception e){
            e.printStackTrace();
        }finally{
            try{
                if( null != fr ){
                    fr.close();
                }
            }catch (Exception e2){
                e2.printStackTrace();
            }
        }
    }