【问题标题】:Unable to split a string无法拆分字符串
【发布时间】:2011-03-21 11:14:36
【问题描述】:

我有一个字符串

普拉内尔·皮迪基蒂先生

当我使用这个正则表达式时

 String[] nameParts = name.split("\\s+");

我只得到了两个部分,而不是三个部分,MrPraneel PIDIKITI

我无法拆分第二个字符串。有谁知道可能是什么问题?

我什至用过split(" ");

问题是我使用replaceAll("\\<.*?>", " ").trim(); 将html 转换为这个字符串,然后我使用name.split("\\s+"); 来获取名称值。

我认为它一定不是空格(一些特殊字符)。

【问题讨论】:

  • 我无法确认。两种方法都对我有用。请提供一个完整的例子。
  • 这似乎有些牵强,但可能是 Praneel 和 PIDIKITI 之间的空格实际上不是空格字符 0x20?
  • @Maverik:一点也不牵强——几乎就是这样。 @Praneel:遍历字符串,将每个字符打印为 int,实际空间为 32,其他任何内容都是您的问题。

标签: java split nsxmlparser


【解决方案1】:

您的代码应该可以工作。我怀疑你的输入。 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
  • @Praneel:像name.replaceAll("[^\\p{Print}]","")这样删除所有不可打印的垃圾字符。
  • @Praneel:在 Praneel 和 PIDIKITI 之间也没有找到空格,只有一个垃圾。
【解决方案2】:

如果您正在解析 HTML,我可以推荐 JSoup 吗?它是一个很好的 java HTML 解析器

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-11
    • 1970-01-01
    相关资源
    最近更新 更多