在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
,在这种情况下,你会得到一个异常,你应该赶上并处理它)。
答
使用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]);
}
答
有此问题的许多解决方案。访问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
非常感谢您的帮助!你解决了它! – Eran 2014-11-22 19:10:31