Java 从包含特定字符的字符串中删除行

Java 从包含特定字符的字符串中删除行,java,string,Java,String,我正在做一个Java项目来读取一个Java类,并将所有文档注释提取到一个HTML文件中。我很难清理一系列我不需要的管线 假设我有一个字符串,例如: "/** * Bla bla *bla bla *bla bla */ CODE CODE CODE /** * Bla bla *bla bla *bla bla */ " 我想删除所有不以*开头的行 我有办法做到吗 Yes Java的String类有一个startsWith()方法,该方法返回一个布尔值。您可以遍历文件中的每一行,检查每一行

我正在做一个Java项目来读取一个Java类,并将所有文档注释提取到一个HTML文件中。我很难清理一系列我不需要的管线

假设我有一个字符串,例如:

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

CODE
CODE
CODE

/**
* Bla bla
*bla bla
*bla bla
*/ "
我想删除所有不以
*
开头的行


我有办法做到吗

Yes 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中的文本文档中删除行。因此,您必须将所需的行复制到新文件中。或者,如果您需要输出同一个文件(刚刚更改),您可以将数据读入内存,删除该文件,创建一个具有相同名称的新文件,并且只输出所需的行。虽然,坦白说,对我来说这似乎有点傻

首先,您应该使用
String.split(String)
在换行符上将
字符串拆分为
String[]
。换行符通常是
'\n'
,但为了安全起见,可以使用
system.getProperty(“Line.separator”)获取系统行分隔符

现在可以使用以下代码将换行符上的
字符串
拆分为
字符串[]

String[] lines = originalString.split(System.getProperty("line.separator"));
将字符串拆分为多行后,现在可以使用
String.startsWith(字符串前缀)
检查每行是否以
*
开头,如果是空字符串,则将其设置为空字符串

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

哦,这很有帮助。我马上开始。谢谢!没问题。如果解决方案对您有效,您能将答案标记为有用和/或接受吗?我刚刚注意到,但这会删除以“*”开头的行。我想删除所有其他行。有没有一种方法可以做到这一点,或者只需将这些行写入另一个字符串(如果更容易的话)?如果(trimmeline.startsWith(linesToRemoveStartsWith))继续,则更改
即只需添加一个
trimmedLine.startsWith(linesToRemoveStartsWith)
之前。StringBuilder finalStringBuilder=新的StringBuilder(“”);
StringBuilder finalStringBuilder= new StringBuilder("");
for(String s:lines){
   if(!s.equals("")){
       finalStringBuilder.append(s).append(System.getProperty("line.separator"));
    }
}
String finalString = finalStringBuilder.toString();