Java 从包含特定字符的字符串中删除行
我正在做一个Java项目来读取一个Java类,并将所有文档注释提取到一个HTML文件中。我很难清理一系列我不需要的管线 假设我有一个字符串,例如: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()方法,该方法返回一个布尔值。您可以遍历文件中的每一行,检查每一行
"/**
* 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))继续,则代码>到代码>即只需添加一个代码>在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();