我有一个字符串,其中包含由pipe(|)
连接的数据示例:5 | aa@gmail.com | 477 | en | 87477
该字符串有~15个由管道连接的字段。
某些字段可能包含空数据: 示例:5 | aa@gmail.com |||| 87477
如何有效地获取Java 1.6中的所有单个字段?
谢谢!
答案 0 :(得分:3)
考虑使用java提供的Split方法
String str = "5|aa@gmail.com|477|en|87477";
String[] data = str.split("\\|");
for(String s : data){
System.out.println(s);
}
我得到的输出是
5
aa@gmail.com
477
en
87477
因为它只是一个字符串数组,您可以根据需要访问数据,即数据[1]给出aa@gmail.com
答案 1 :(得分:1)
我赞成String.split
答案,因为它最简单。它的两个缺点是:
要稍微增加,如果需要,可以预先编译模式,然后使用它进行拆分:
import java.util.regex.Pattern;
private static final Pattern BAR_REGEX = Pattern.compile( Pattern.quote("|") );
然后在你的方法中:
String[] splits = BAR_REGEX.split( inputString );
答案 2 :(得分:1)
您可能还需要考虑来自StringUtils的Apache Commons Lang课程。非常快,确实处理'缺失'令牌。
答案 3 :(得分:1)
Alan的解决方案大部分时间都会有效,除非你最后有空令牌。例如,
String str =“5 | aa@gmail.com | 477 | en |||| 87477 || x |||”;
你可以通过
解决这个问题String str =“5 | aa@gmail.com | 477 | en |||| 87477 || x |||”;
str.split(“\\ |”, - 1);
答案 4 :(得分:0)
考虑使用StringTokenizer
类。