2011-02-13 52 views
2

我試圖做這個工作,我不明白爲什麼它不起作用,因爲它對我來說很有意義,但它似乎沒有任何意義。BufferedReader替換循環中

當你閱讀的代碼,我的期望是通過試驗來代替,同時保持文本(保存\ n)的相同結構,稍後保存_NAME(尚未完成)

我還保存它使用ArrayList的,但絕不代替起飛要麼,所以我無言以對

try { 
     BufferedReader reader = new BufferedReader (new InputStreamReader (
     new FileInputStream (temp), "utf-8")); 
     String line = reader.readLine(); 
     StringBuffer text = new StringBuffer(); 

    while(line != null) { 
     line.replace("[_NAME]", "TEST"); 
     Logger.info(line); 
     line = reader.readLine(); 

     } 
    reader.close(); 


    } catch(FileNotFoundException ex) { 

    } catch(UnsupportedEncodingException ex) { 

    } catch(IOException ex) {} 

回答

6

正確的路線是

line = line.replace("_NAME", "TEST"); 

如果您使用的支架,您指定的字符,如個人比賽(_,N,A,ME),並且您想要替換整個比賽。

其次,replace方法返回一個新的String,其中包含修改後的String。請記住,Java中的字符串是不可變的,所以沒有修改String的方法會修改輸入對象,它們將始終返回一個新對象。

+0

了!我仍然用括號工作,我認爲括號只會在`replaceAll`中...(你指的是子模式嗎?) – allenskd 2011-02-13 02:23:26

3

一個可能的問題是,你有[]周圍_NAME但我會去的「你忘了replace返回新的字符串,而不是改變它在原位的」選項。見here

換句話說,應該從改變:

line.replace (... 

到:

line = line.replace (...