Java:使用未知字符拆分句子?

时间:2015-06-18 08:57:19

标签: java regex string notepad++

我知道,很多人都在询问有关分句的问题。但是我的问题略有不同。我在字符串数据中有一些未知的字符(对我来说未知,看起来像制表符),我试图将它用作拆分的分隔符。

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

The President   Profile of the President
Swearing in of the President
Assets of the President
Speeches    Speeches
Foreign Visits
Press Releases
Gallery Photo Gallery
Video Gallery
Rashtrapati Bhavan  Panoramic View

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

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

enter image description here

在上面的数字中,人们可以清楚地看到橙色的箭头符号(“----->”),这个符号是什么?它的宽度不固定。那我怎么能分开一些句子呢? 有人遇到这个问题吗?

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

在这种情况下,我通常会在Hex编辑器中打开文件并检查确切的字符代码。但是,如果您只想使用任何未知字符进行拆分,则可以使用[^...]模式。以下是如何使用非字母数字或空格分隔字符串的示例:

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

答案 2 :(得分:0)

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

一旦你弄清楚哪个代码点与你正在寻找的空白字符相对应,你可以在split调用中使用它,作为模式的一部分,以下成语:\uhhhh

引用docs

  

\ xhh十六进制值为0xhh

的字符      

\ uhhhh十六进制值为0xhhhh

的字符      

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