使用java String.split()方法分隔数据

时间:2014-05-17 16:41:21

标签: java regex

我一直在尝试使用java编程语言中的String.split()方法从字符串中检索数据。 我的字符串中的数据是一种奇怪的格式。让我举个例子:假设我有以下字符串:

String s="My name is      :  John Smith         13   75,5";

我需要拆分字符串,使:之前的所有内容(除了空白)转到字符串,然后,在剩下的内容中,将第一个数字之前的所有内容(除了空格)转换为另一个字符串,然后第一个数字到另一个字符串,最后一个数字到另一个字符串,这样,考虑到我的例子中的String s,我将得到以下输出:

My name is
John Smith
13
75,5

我尝试了以下代码:

data= s.split("\\s*\\:\\s*|\\s+|\\s+");

但输出是:

My
name
is
John
Smith
13
75,5

我尝试了许多其他正则表达式,但没有成功(我相信这证明了我和正则表达式的初学者有多少......)有人可以帮助我吗?

注意:我认为为我的数据编写自己的拆分方法并不困难,也许它在性能方面要好得多,但我真的很想了解如何做到这一点使用正则表达式。

2 个答案:

答案 0 :(得分:1)

如果你想保留单个空格,但是在2 +空格上分割,表达式如下:

data= s.split("\\s*\\:\\s*|\\s{2,}");

这会产生您需要的输出(demo):

My name is
John Smith
13
75,5

答案 1 :(得分:1)

"\\s*\\:\\s*|\\s+|\\s+"

|字符不符合您的意图。它们充当“或”,因此在您的情况下,您的正则表达式将\\s+与单词之间的空格匹配,因为虽然它们与正则表达式的第一部分不匹配,但它们肯定与第二部分(和第三部分)匹配。

更好的解决方案是这样的:

"\\s*\\:\\s*|\\s{2,}"