在java中读取特定单词之间的字符文件
我有一个java文件,FileJava.java,如下所示:在java中读取特定单词之间的字符文件,java,java-io,Java,Java Io,我有一个java文件,FileJava.java,如下所示: public class FileJava { public static void main(String args[]) { for (int i = 0; i < 5; i++) { } } 公共类FileJava{ 公共静态void main(字符串参数[]){ 对于(int i=0;i
public class FileJava {
public static void main(String args[]) {
for (int i = 0; i < 5; i++) {
}
}
公共类FileJava{
公共静态void main(字符串参数[]){
对于(int i=0;i<5;i++){
}
}
}
然后,我使用以下代码逐行阅读上述代码:
import java.util.List;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.util.ArrayList;
public class FileReplace {
List<String> lines = new ArrayList<String>();
String line = null;
public void doIt() {
try {
File f1 = new File("FileJava.java");
FileReader fr = new FileReader(f1);
BufferedReader br = new BufferedReader(fr);
while ((line = br.readLine()) != null) {
if (line.contains("for"))
{
lines.add("long A=0;");
if(line.contains("(") && line.contains(")")){
String get = line;
String[] split = get.split(";");
String s1 = split[0];
String s2 = split[1];
String s3 = split[2];
}
}
lines.add(line);
}
fr.close();
br.close();
FileWriter fw = new FileWriter(f1);
BufferedWriter out = new BufferedWriter(fw);
for(String s : lines)
out.write(s);
out.flush();
out.close();
} catch (Exception ex) {
ex.printStackTrace();
}
}
public static void main(String args[]) {
FileReplace fr = new FileReplace();
fr.doIt();
}
import java.util.List;
导入java.io.BufferedReader;
导入java.io.BufferedWriter;
导入java.io.File;
导入java.io.FileReader;
导入java.io.FileWriter;
导入java.util.ArrayList;
公共类文件替换{
列表行=新的ArrayList();
字符串行=null;
公共无效doIt(){
试一试{
文件f1=新文件(“FileJava.java”);
FileReader fr=新的FileReader(f1);
BufferedReader br=新的BufferedReader(fr);
而((line=br.readLine())!=null){
如果(第行包含(“for”))
{
行。添加(“长A=0;”;
if(line.contains(“(”&&line.contains(“)”){
字符串get=line;
String[]split=get.split(“;”);
字符串s1=拆分[0];
字符串s2=拆分[1];
字符串s3=拆分[2];
}
}
行。添加(行);
}
fr.close();
br.close();
FileWriter fw=新的FileWriter(f1);
BufferedWriter out=新的BufferedWriter(fw);
用于(字符串s:行)
写出。写出(s);
out.flush();
out.close();
}捕获(例外情况除外){
例如printStackTrace();
}
}
公共静态void main(字符串参数[]){
FileReplace fr=newfilereplace();
doIt()神父;
}
}
问题是,如何读取文件java.java(for)中“(”和“)”之间的字符,我指的是存储在变量中的字符“int i=0;i<5;i++”,我根据“;”进行拆分,但打印时,值:
s1 = for (int i = 0
s2 = i < 5
s3 = i++) {
s1=for(int i=0
s2=i<5
s3=i++){
我希望:
s1 = int i = 0
s2 = i < 5
s3 = i++
s1=int i=0
s2=i<5
s3=i++
谢谢如果您想读取java文件的内容,最好使用AST(抽象语法树)解析器,它将读取文件的内容,然后在遇到某些表达式时回调。在您的情况下,您可以只侦听“for”循环。如果您想读取java文件的内容,最好使用AST(抽象语法树)解析器,它将读取文件的内容,然后在遇到某些表达式时回调。在您的情况下,您可以只侦听“for”循环。如果您想读取java文件的内容,最好使用AST(抽象语法树)解析器,它将读取文件的内容,然后在遇到某些表达式时回调。在您的情况下,您可以只侦听“for”循环。如果您想读取java文件的内容,最好使用AST(抽象语法树)解析器,它将读入文件的内容,然后在遇到某些表达式时回调。在您的情况下,您可以只听“for”循环。要回答您的问题,如何将拆分限制在括号内的部分:
String[] split =
get.substring( get.indexOf('(')+1, get.indexOf(')').split("\\s*;\\s*");
编辑以解决另一个问题
文件的打印将全部在一行中进行,因为BufferedReader.readLine会将行尾(LF,CRLF)从返回的行中剥离。因此,在写入时添加换行符:
for(String s : lines){
out.write(s);
out.newLine();
}
要回答如何将拆分限制在括号内的部分,请执行以下操作:
String[] split =
get.substring( get.indexOf('(')+1, get.indexOf(')').split("\\s*;\\s*");
编辑以解决另一个问题
文件的打印将全部在一行中进行,因为BufferedReader.readLine会将行尾(LF,CRLF)从返回的行中剥离。因此,在写入时添加换行符:
for(String s : lines){
out.write(s);
out.newLine();
}
要回答如何将拆分限制在括号内的部分,请执行以下操作:
String[] split =
get.substring( get.indexOf('(')+1, get.indexOf(')').split("\\s*;\\s*");
编辑以解决另一个问题
文件的打印将全部在一行中进行,因为BufferedReader.readLine会将行尾(LF,CRLF)从返回的行中剥离。因此,在写入时添加换行符:
for(String s : lines){
out.write(s);
out.newLine();
}
要回答如何将拆分限制在括号内的部分,请执行以下操作:
String[] split =
get.substring( get.indexOf('(')+1, get.indexOf(')').split("\\s*;\\s*");
编辑以解决另一个问题
文件的打印将全部在一行中进行,因为BufferedReader.readLine会将行尾(LF,CRLF)从返回的行中剥离。因此,在写入时添加换行符:
for(String s : lines){
out.write(s);
out.newLine();
}
这是因为您正在为输入拆分“;”
for (int i = 0; i < 5; i++) {
那么你的代码就是
if(line.contains("(") && line.contains(")")){
String get = getBracketContent(line);
String[] split = get.split(";");
理想情况下,我会使用正则表达式来解析您需要的信息,但这可能是您以后可能需要研究的内容。这是因为您正在拆分输入的“;”
for (int i = 0; i < 5; i++) {
那么你的代码就是
if(line.contains("(") && line.contains(")")){
String get = getBracketContent(line);
String[] split = get.split(";");
理想情况下,我会使用正则表达式来解析您需要的信息,但这可能是您以后可能需要研究的内容。这是因为您正在拆分输入的“;”
for (int i = 0; i < 5; i++) {
那么你的代码就是
if(line.contains("(") && line.contains(")")){
String get = getBracketContent(line);
String[] split = get.split(";");
理想情况下,我会使用正则表达式来解析您需要的信息,但这可能是您以后可能需要研究的内容。这是因为您正在拆分输入的“;”
for (int i = 0; i < 5; i++) {
那么你的代码就是
if(line.contains("(") && line.contains(")")){
String get = getBracketContent(line);
String[] split = get.split(";");
理想情况下,我会使用正则表达式来解析您需要的信息,但这可能是您以后可能需要研究的内容。在拆分之前,您需要获得正确的
子字符串。
。是的,但我不知道如何使用此代码:if(line.contains(“”)&&line.contains(“”){@laune-请忽略。你是对的。在分割之前,你需要得到正确的子字符串。是的,但我不知道如何,对这个代码有什么想法:if(line.contains(“(”&&line.contains(“)”){@laune-请忽略。你是对的。在分割之前,你需要得到正确的子字符串。是的,但我不知道怎么做,对这个代码有什么想法:if(line.cont