在Java中从一个字符串currectly切割信息

问题描述:

林从.txt文件中读取Java中的字符串说:在Java中从一个字符串currectly切割信息

ë1 2 W1

(有它的IM在一个字符串变量) 现在我想切信息为3个变量:

v1 = 1 
v2 = 2 
w = 1 

问题是数字可能示例中占据更多的字节:

E 12 204 W1

我该如何轻松将第二,第三和第四个单词转化为不同的变量?

String src = "E 12 204 W1"; 
    String[] numbers = src.split("\\D+"); 
    int v1 = Integer.parseInt(numbers[1]); 
    int v2 = Integer.parseInt(numbers[2]); 
    int w = Integer.parseInt(numbers[3]); 

split的这个特定版本删除了所有不是数字的东西。第一个元素(numbers[0])将是一个空字符串,因此您可以忽略它。其他人将是数字,只有数字,所以你可以安全地将它们解析为整数(除非你认为有人会输入大量数字,例如98798765465498798798754,在这种情况下,你会得到一个异常,你应该赶上并处理它)。

+0

非常感谢您的帮助!你解决了它! – Eran 2014-11-22 19:10:31

使用split()

public static void main (String[] args) throws java.lang.Exception 
{ 
    String string = "E 12 204 W1"; 
    String[] parts = string.split(" "); 
    System.out.println(parts[1]); 
    System.out.println(parts[2]); 
    System.out.println(parts[3]); 
} 
+0

我已经使用了split命令,它在一秒钟内解决了它,非常感谢!我如何构建和使用正则表达式来只读数字并转储'W'? – Eran 2014-11-22 19:07:17

+0

@Eran请标记为答案,如果有帮助 – Lrrr 2014-11-22 19:07:52

有此问题的许多解决方案。访问String API查看可满足您需求的所有方法。

我不会告诉你一个完整的解决方案,但我会尽力引导你。

如果模式是固定的,您可以很容易地编写一个方法,该方法是字符串并在循环中分配第二,第三和第四个变量。

您还可以构建一个正则表达式,为您提取所需的字段,例如, \d+\s+\d+\s+\w\d+

如果

E    12   204   W1 
<token><space><token><space><token><space><token> 
0    1   2    3 

是您的格式,那么你可以只split在指数3使用" ",并获得与指数1和2的元素,从元素的字符串中删除龙头W