使用javaString.split()方法分离数据



我一直在尝试使用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

我尝试过许多其他正则表达式,但都没有成功(我相信这证明了我对regex是一个多么初学者…(有人能帮我吗?

注意:我认为为我的数据编写自己的拆分方法不会太困难,也许它在性能方面要好得多,但我真的很想了解如何使用regex来实现这一点。

如果您想保留单个空格,但在2个以上的空格上进行拆分,则表达式如下所示:

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

这会产生您需要的输出(演示(:

My name is
John Smith
13
75,5
"\s*\:\s*|\s+|\s+"

|角色不会做你认为他们可能做的事情。它们的作用是"或",所以在您的情况下,正则表达式将\s+与单词之间的空格匹配,因为虽然它们与正则表达式的第一部分不匹配,但它们肯定与第二部分(和第三部分(匹配。

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

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

最新更新