2012-06-23 27 views
0
FileReader f0 = new FileReader("1.html"); 
StringBuilder sb = new StringBuilder(); 
BufferedReader br = new BufferedReader(f0); 
while((temp1=br.readLine())!=null) 
{ 
sb.append(temp1); 
} 
String para = sb.toString().replaceAll("<br>","\n"); 
String textonly = Jsoup.parse(para).text(); 
System.out.println(textonly); 

FileWriter f1=new FileWriter("1.txt"); 
char buf1[] = new char[textonly.length()]; 
textonly.getChars(0,textonly.length(),buf1,0); 

for(i=0;i<buf1.length;i++) 
{ 
if(buf1[i]=='\n') 
    f1.write("\r\n"); 
f1.write(buf1[i]); 

在創建新文本文件時,此代碼會生成多行文本,我希望文本文件應該只有一行。我怎樣才能做到這一點。多行到單行

+0

@Kazekage「buf1」不是一個字符串,它是一個字符。如你所說的,除去「\ n」後,它不會只顯示一行,它會給出與prev相同的結果。 – mkp

+0

@JB先生我的代碼是編譯並給出結果,但不是單行。 – mkp

+0

您的代碼所做的「唯一」事情是用換行符替換所有「
」。如果您希望它停止製作新的線條,請停止這樣做和/或用其他內容替換「
」。 (我知道旁邊沒有任何html但不是「
」也正確的語法?如果是這樣的話應該以同樣的方式處理?) – esej

回答

0

甚至刪除所有\ n之後,它正在多條線路。

我認爲錯誤是在下面的代碼:

for(i = 0; i < buf1.length; i++) 
{ 
    if(buf1[ i ] == '\n') 
     f1.write("\r\n"); 
    f1.write(buf1[ i ]); 

當一個新的行字符\n匹配,你正在寫\r\n該文件並再次使用擰相同字符的文件f1.write(buf1[ i ])。使用else將停止再次將\n寫入文件。

for(i = 0; i < buf1.length; i++) 
{ 
    if(buf1[ i ] == '\n') 
    { 
     f1.write("\r\n"); 
    } 
    else 
    { 
     f1.write(buf1[ i ]); 
    } 
    // ... 
} // for 

或者使用三元運算符與\r\n更換\n而寫。

f1.write(buf1[ i ] == '\n' ? "\r\n" : buf1[ i ]); 
+0

感謝您的有用建議。 – mkp

2

停止將新行字符\ n寫入文件,並且應該停止創建多行。

+0

即使刪除所有\ n它是做多行。 – mkp

0

是不是< \ n同樣的事情?如果你這樣做,你的文本將不會有變化。 您需要用空格替換< \ br>。

String para = sb.toString().replaceAll("<br>"," ");