2009-12-07 50 views
0

我想在Java中做一些解析,我使用眼镜蛇HTML解析器将HTML获取到DOM,然后使用XPath获取我想要的节点。当我坐下来所期望的水平我打电话node.getTextContents(),但是这给了我像Java内部文本(getTextContents())问题

"\n\n\nValue\n-\nValue\n\n\n" 

字符串是否有一个内置的方式摆脱换行吗?我想在内部文本做一个正则表达式像

(?:\s*([^-]+)\s*-\s*([^-]+)\s*) 

和真的不希望有处理文本之间可能存在不同的空格符号。

例输入:

Value 
- 
Value 

感谢

+0

我相信(相当实际上肯定)的。NET将返回 “价值 - 价值”给予相同的输入,这显然具有节点内部的换行符 。所以说一个更好的方法是,DOM解析器能否将这个字符串与我无关(至少对我来说)给出空白空间? – LostNomad311 2009-12-07 06:47:23

+0

所有事情都考虑到了,我很慢。 你们是正确的那些RegExes工作得很好,我没有 - 在Java中是这样的。但是,Java处理RegEx它不同于.Net和JavaScript。无论如何,简化我的发现后,我发现'(?:\ s *)([^ - ] +)(?:\ s *)'最接近我想要的。 因此,我最新的,并希望不像最后一个完全关闭,问题是我如何摆脱最后RegEx返回的单个尾随空格(有一个空格或换行符(尝试后跟作为源)之后每个'价值'在例子中)? – LostNomad311 2009-12-12 08:53:17

回答

0

您可以使用String.replaceAll()

String trimmed = original_string.replaceAll("\n", ""); 

第一个参数是一个正则表达式:你可以用replaceAll("\\s+", "")例如更换空白的所有连续的块原始字符串。

+0

这很奇怪,它适用于我。 – 2009-12-08 13:01:48

0

我不能完全肯定我的理解正确的问题,而是要消除所有的空格最简单的方法是:

一个String = node.getTextContents()的replaceAll(“\\ S”,” “);

如果你只是想摆脱前/后空白,使用trim()。