我正在尝试替换此字符“{{”我有以下读取文件的方法。
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/
我尝试使用传统的替换但我收到布尔错误...有人可以帮助我吗?
问候!
答案 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();
}
}
}