我有一个这样的字符串:
1 | 2 | 3 | 4 | 5 | 6 | 7 | | | | | | | |
字符串也可能有更多/更少的数据。我需要|
一一删除并只获取数字。
我有一个这样的字符串:
1 | 2 | 3 | 4 | 5 | 6 | 7 | | | | | | | |
字符串也可能有更多/更少的数据。我需要|
一一删除并只获取数字。
番石榴的分裂器岩石!
String input = "1 | 2 | 3 | 4 | 5 | 6 | 7 | | | | | | | |";
Iterable<String> entries = Splitter.on("|")
.trimResults()
.omitEmptyStrings()
.split(input);
如果你真的想变得花哨:
Iterable<Integer> ints = Iterables.transform(entries,
new Function<String, Integer>(){
Integer apply(String input){
return Integer.parseInt(input);
}
});
尽管您绝对可以使用正则表达式方法或 String.split,但我觉得使用Splitter
不太容易出错并且更具可读性和可维护性。您可能会争辩说这String.split
可能会更有效,但由于无论如何您都必须进行所有修剪和检查空字符串,我认为它可能会平局。
关于 的一条评论transform
,它根据需要进行计算,这可能很棒,但也意味着可以对同一个元素进行多次转换。因此我推荐这样的东西来执行所有的计算一次。
Function<String, Integer> toInt = new Function...
Iterable<Integer> values = Iterables.transform(entries, toInt);
List<Integer> valueList = Lists.newArrayList(values);
您可以尝试使用扫描仪:
Scanner sc = new Scanner(myString);
sc.useDelimiter("|");
List<Integer> numbers = new LinkedList<Integer>();
while(sc.hasNext()) {
if(sc.hasNextInt()) {
numbers.add(sc.nextInt());
} else {
sc.next();
}
}
或者使用 Java 板载方法:
String[] data="1 | 2 | 3 | 4 | 5 | 6 | 7 | | | | | | | |".split("|");
for(String elem:data){
elem=elem.trim();
if(elem.length()>0){
// do someting
}
}
在分隔符处拆分字符串 | 然后解析数组。
这样的事情应该做:
String test = "|1|2|3";
String delimiter = "|";
String[] testArray = test.split(delimiter);
List<Integer> values = new ArrayList<Integer>();
for (String string : testArray) {
int number = Integer.parseInt(string);
values.add(number);
}
干得好:
String str = "1 | 2 | 3 | 4 | 5 | 6 | 7 | | | | | | | |".replaceAll("\\|", "").replaceAll("\\s+", "");
你的意思是喜欢吗?
String s = "1 | 2 | 3 | 4 | 5 | 6 | 7 | | | | | | | |";
for(String n : s.split(" ?\\| ?")) {
int i = Integer.parseInt(n);
System.out.println(i);
}
印刷
1
2
3
4
5
6
7
inputString.split("\\s*\\|\\s*")
会给你一个数字数组作为字符串。然后你需要解析数字:
final List<Integer> ns = new ArrayList<>();
for (String n : input.split("\\s*\\|\\s*"))
ns.add(Integer.parseInt(n);
您可以将 split 与以下正则表达式一起使用(允许额外的空格、制表符和空存储桶):
String input = "1 | 2 | 3 | 4 | 5 | 6 | 7 | | | | | | | | ";
String[] numbers = input.split("([\\s*\\|\\s*])+");
System.out.println(Arrays.toString(numbers));
输出:
[1、2、3、4、5、6、7]