我正在开发一个Java项目来读取java类并将所有DOC注释提取到HTML文件中。我无法清理我不需要的一串线。
假设我有一个字符串,如:
"/**
* Bla bla
*bla bla
*bla bla
*/
CODE
CODE
CODE
/**
* Bla bla
*bla bla
*bla bla
*/ "
我想删除所有不以*
开头的行。
我有什么方法可以做到吗?
答案 0 :(得分:5)
首先,您应该使用String
将String[]
分成String.split(String)
换行符。换行符通常为'\n'
,但为了安全起见,您可以使用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();
答案 1 :(得分:0)
是Java的String类有一个返回布尔值的startsWith()方法。您可以遍历文件中的每一行,并检查每行是否以&#34; *&#34;如果确实删除了它。
试试这个:
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);
答案 2 :(得分:0)
据我记忆,您无法在Java中就地删除文本文档中的行。因此,您必须将所需的行复制到新文件中。或者,如果您需要输出相同的文件,只需更改,您可以将数据读入内存,删除文件,创建一个具有相同名称的新文件,并仅输出所需的行。坦率地说,虽然对我来说似乎有点傻。