【问题标题】:Java : Split Sentence using unknown character?Java:使用未知字符拆分句子?
【发布时间】:2015-06-18 08:57:18
【问题描述】:

我知道,很多人都问过关于拆分句子的问题。但是我的问题略有不同。我在字符串数据中得到了一些未知字符(对我来说未知,看起来像制表符),我正在尝试将其用作分割的分隔符。

原文为:(*尝试选择空格部分,可能会看到效果)

总统简介 总统简介 总统宣誓就职 总统的资产 致辞 致辞 外国访问 新闻稿 画廊 照片画廊 视频库 Rashtrapati Bhavan 全景

我在想那个空格部分可能是制表符。但是我错了。我尝试与tab匹配但没有效果。

然后我在 Notepad ++ 中打开了这个字符串,并将 true 设置为 显示所有字符。在那里我找到了这个角色。请参考下图。

在上图中,可以清楚地看到橙色的箭头符号(“----->”),这是哪个符号?它的宽度不固定。那么如何拆分一些句子呢? 有人遇到这个问题吗?

【问题讨论】:

  • 箭头符号是表格的表示。

标签: java regex string notepad++


【解决方案1】:

不知不觉我得到了答案。上图中的空格或箭头是nbsp; Html Entity。这就是为什么我无法打破这句话。上面显示的输出来自我试图点击 html url 并提取 html 页面数据的 Tika 解析器。最后把它拆成句子。

【讨论】:

    【解决方案2】:

    在这种情况下,我通常在十六进制编辑器中打开文件并检查确切的字符代码,无论它是什么。但是,如果您只想按任何未知字符进行拆分,则可以使用 [^...] 模式。下面是一个例子,如何用任何非字母数字或空格的字符来分割字符串:

    String[] fields = inputStr.split("[^\\w ]");
    

    【讨论】:

      【解决方案3】:

      您可能希望将部分文本转换为 unicode 转义符,以便观察代码点。

      一旦您确定了哪个代码点对应于您要查找的空白字符,您可以在 split 调用中使用它,作为模式的一部分,使用以下习惯用法:@987654323 @。

      引用docs

      \xhh 十六进制值为0xhh的字符

      \uhhhh 十六进制值为0xhhhh的字符

      \x{h...h} 十六进制值为 0xh...h 的字符 (Character.MIN_CODE_POINT

      【讨论】:

        猜你喜欢
        • 2014-01-25
        • 2017-10-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多