簡體   English   中英

從包含某些字符的字符串中刪除行

[英]Removing lines from a string containing certain character

我正在一個Java項目中讀取Java類並將所有DOC注釋提取到HTML文件中。 我在清理不需要的線時遇到了麻煩。

可以說我有一個字符串,例如:

"/**
* Bla bla
*bla bla
*bla bla
*/

CODE
CODE
CODE

/**
* Bla bla
*bla bla
*bla bla
*/ "

我想刪除所有不以*開頭的行。

有什么辦法可以做到嗎?

首先,應使用String.split(String)在換行符處將String拆分為String[] 換行符通常是'\\n'但是為了安全起見,可以使用System.getProperty("line.separator");獲得系統換行符System.getProperty("line.separator");

現在可以在換行符上將String拆分為String[]的代碼為

String[] lines = originalString.split(System.getProperty("line.separator"));

將String拆分為幾行后,您現在可以使用String.startsWith(String prefix)檢查每行是否以*開頭,然后將其設為空字符串。

for(int i=0;i<lines.length;i++){
    if(lines[i].startsWith("*")){
        lines[i]="";
    }
}

現在您要做的就是將您的String[]回一個String

StringBuilder finalStringBuilder= new StringBuilder("");
for(String s:lines){
   if(!s.equals("")){
       finalStringBuilder.append(s).append(System.getProperty("line.separator"));
    }
}
String finalString = finalStringBuilder.toString();

是的,Java的String類具有一個startsWith()方法,該方法返回一個布爾值。 您可以遍歷文件中的每一行,並檢查每行是否以“ *”開頭,以及是否確實將其刪除。

嘗試這個:

File inputFile = new File("myFile.txt");
File tempFile = new File("myTempFile.txt");

BufferedReader reader = new BufferedReader(new FileReader(inputFile));
BufferedWriter writer = new BufferedWriter(new FileWriter(tempFile));

String linesToRemoveStartsWith = "*";
String currentLine;

while((currentLine = reader.readLine()) != null) {
    // trim newline when comparing with lineToRemove
    String trimmedLine = currentLine.trim();
    if(!trimmedLine.startsWith(linesToRemoveStartsWith )) continue;
    writer.write(currentLine + System.getProperty("line.separator"));
}
writer.close(); 
reader.close(); 
boolean successful = tempFile.renameTo(inputFile);

據我所知,您無法從Java中就地從文本文檔中刪除行。 因此,您必須將所需的行復制到新文件中。 或者,如果您需要輸出相同的文件(只需更改),則可以將數據讀入內存,刪除文件,使用相同的名稱創建一個新文件,然后僅輸出所需的行。 雖然,坦白說,對我而言,這似乎有些愚蠢。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM