在Excel文件中,行A有8000列,每列中都有xml,如下所示。所以我需要读取整个文件并只写入每列内的phoneNumber。
OutputElements: <?xml version="1.0" encoding="UTF-8" standalone="yes"?><ns2:xxxxxxxx xmlns:ns2="http://webservice.com/"><ns2:xxxxxxx><ns2:xxxxxx><?xml version="1.0" encoding="UTF-8" standalone="yes"?><xxxxxxxx;<xxxxxxxxxx keyword="TEXT" phoneNumber="+123456789" pinNumber=123456 /></xxxxxxxxxxx><;</ns2:xxxxxxxxx><ns2:messageType>xxxxxxxxxxxxxxxx</ns2:messageType><ns2:xxxxxxx>3456</ns2:xxxxxxx><ns2:id>xxxxxxx</ns2:id></ns2:xxxxxxxx></ns2:xxxxxxxxx>
我的代码:
BufferedReader reader = new BufferedReader(new FileReader(file));
String line = null;
String isPhoneNumber ="phoneNumber=";
while((line = reader.readLine()) != null){
Matcher matcher = pattern.matcher(isPhoneNumber);
StringTokenizer st = new StringTokenizer(line,"");
while(st.hasMoreElements() || matcher.equals(isPhoneNumber)){
System.out.println("OutputElements: " +st.nextElement());
}
}
reader.close();
我正在读文件。我只需要写下phoneNumber =&#39; 123456789&#39;作为输出。 SubString在我的脑海里,我也需要使用REGEX,Matchers和Patterns。有人可以帮助我吗?
答案 0 :(得分:0)
除了正则表达式之外,你并没有从代码中遗漏这么多东西。我建议只使用模式和匹配器来检索数据而不是子字符串,这是一个适合您的工作样本:
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.StringTokenizer;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
*
* @author dean2191
*/
public class JavaApplication6 {
public static void main(String[] args) {
try {
BufferedReader reader = new BufferedReader(file));
String line = null;
String isPhoneNumber ="phoneNumber=\"\\+?[0-9]+\"";
while((line = reader.readLine()) != null){
Pattern pattern = Pattern.compile(isPhoneNumber);
Matcher matcher = pattern.matcher(line);
StringTokenizer st = new StringTokenizer(line,"");
int count=0;
while(matcher.find()){
count++;
System.out.println("Match number "
+ count);
System.out.println(matcher.group());
}
}
reader.close();
} catch (IOException ex) {
Logger.getLogger(JavaApplication6.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
我做了&#39; +&#39;可选的,所以你理论上可以处理它缺失,无论如何希望这有助于你有任何问题,我很乐意提供帮助。