无法分割字符串
我有一个字符串无法分割字符串
先生praneel PIDIKITI
当我使用这个正则表达式
String[] nameParts = name.split("\\s+");
而不是让三个部分,我只获得两个,Mr
和Praneel PIDIKITI
。
我无法拆分第二个字符串。有谁知道可能是什么问题?
我甚至使用split(" ");
。
问题是我用replaceAll("\\<.*?>", " ").trim();
将html转换成这个字符串,然后我用name.split("\\s+");
来获得名称值。
我认为它必须是空间以外的东西(一些特殊字符)。
你的代码应该可以工作。我怀疑你的意见。 Praneel和PIDIKITI之间可能有一个不可打印的垃圾字符。例如,
String name = "Mr praneel" + (char)1 +"PIDIKITI";
String[] nameParts = name.split("\\s+");
for(String s : nameParts)
System.out.println(s);
您确定Praneel和PIDIKITI之间没有垃圾字符吗?
删除非打印字符这样的:
// remove non printable characters excluding white space characters
name = name.replaceAll("[^\\p{Print}\\s]","");
当我在屏幕上打印它看起来像这样Mr#Praneel#PIDIKITI – 2011-03-21 12:03:31
@Praneel:删除所有不可打印的垃圾字符,像这样'name.replaceAll(“[^ \\ p {Print}]”,“”)'' 。 – 2011-03-21 12:13:05
@Praneel:Praneel和PIDIKITI之间没有空间,但只有一个垃圾。 – 2011-03-21 12:15:49
我无法证实这一点。两种方法都适用于我。请提供一个完整的例子。 – musiKk 2011-03-21 11:20:30
这看起来似乎有点牵强,但可能Praneel&PIDIKITI之间的空间实际上不是空格字符0x20? – Maverik 2011-03-21 11:33:41
@Maverik:一点都不牵强 - 几乎就是这样。 @Praneel:遍历字符串,将每个字符打印为一个int,一个真实的空间将是32,其他任何东西都是你的箴言。 – 2011-03-21 11:36:22