我在申请中遇到了一个问题。我有一个文本文件,其中包含一段代码,我需要检索它以应用到一个字符串变量中。问题是哪种方法最好?我在下面运行了这些示例,但它们在逻辑上是不正确/不完整的。看看:
通读线阅读:
BufferedReader bfr = new BufferedReader(new FileReader(Node));
String line = null;
try {
while( (line = bfr.readLine()) != null ){
line.contentEquals("d.href");
System.out.println(line);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
通读字符:
BufferedReader bfr = new BufferedReader(new FileReader(Node));
int i = 0;
try {
while ((i = bfr.read()) != -1) {
char ch = (char) i;
System.out.println(Character.toString(ch));
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
};
通过扫描仪阅读:
BufferedReader bfr = new BufferedReader(new FileReader(Node));
BufferedReader bfr = new BufferedReader(new FileReader(Node));
int wordCount = 0, totalcount = 0;
Scanner s = new Scanner(googleNode);
while (s.hasNext()) {
totalcount++;
if (s.next().contains("(?=d.href).*?(}=?)")) wordCount++;
}
System.out.println(wordCount+" "+totalcount);
使用(1.)我很难找到包含代码片段开头的d.href
使用(2.)我无法想到或找到一种方法将d.href
存储为字符串并检索其余信息
使用(3.)我可以正确找到d.href
,但我无法检索txt的片段。
有人可以帮我吗?
答案 0 :(得分:1)
作为我的问题的答案,我使用扫描仪在文本文件中逐字阅读。 .contains("window.maybeRedirectForGBV")
返回一个布尔值,hasNext()
返回一个字符串。然后,在我想要之前,我在文本文件的一个单词上停止查询我的代码拉伸,再向前移动一次,将下一个单词的值存储在一个字符串变量上。从这一点开始,您只需要按照自己的方式处理字符串。希望这有帮助。
String stringSplit = null;
Scanner s = new Scanner(Node);
while (s.hasNext()) {
if (s.next().contains("window.maybeRedirectForGBV")){
stringSplit = s.next();
break;
}
}
答案 1 :(得分:0)
你可以使用这样的正则表达式:
Pattern pattern = Pattern.compile("^\\s*d\\.href([^=]*)=(.*)$");
// Groups: 1-----1 2--2
// Possibly spaces, "d.href", any characters not '=', the '=', any chars.
....
Matcher m = pattern.matcher(line);
if (m.matches()) {
String dHrefSuffix = m.group(1);
String value = m.group(2);
System.out.println(value);
break;
}
BufferedReader将会这样做。