0

我正在使用 JSoup 从网页中提取一段文本,并使用 Apache 的 StringUtils 库清理生成的字符串。第一遍,substringBetween用来抓取括号中的文本就像一个魅力,返回一个value数字字符串 (),后跟单位(例如,2500mg/kg)。

但是当我尝试使用以下方法删除尾随单位(mg/kg)时removeEnd

value = StringUtils.removeEnd(value, "mg/kg");

...我总是完全没有改变原来的字符串——2500mg/kg。

我尝试使用简单的removeremoveEndIgnoreCase(以防万一),但我无法得到任何工作。

首先,我尝试了这个作为替代方案:

value = value.substring(0, value.indexOf("m"));

...这对几个测试有效,然后失败了(??)。所以我尝试了:

value = StringUtils.substring(value, 0, -5);

这似乎工作正常,但我并不喜欢它,因为它没有具体说明它要删除的内容。我真的更喜欢在removeEnd这里使用(或类似的东西)(而且我是新手,所以我总是想知道为什么有些东西不起作用)。

谁能阐明我做错了什么?我在 StringUtils 文档中找不到对特殊字符的任何限制,但是正斜杠会导致问题吗?还是我应该担心不可见的控制字符?

4

1 回答 1

0

为我工作(使用 commons-lang3-3.7.jar):

public static void main(String[] args) {

    String value = "2500mg/kg";
    System.out.println (StringUtils.removeEnd(value, "mg/kg"));
}


2500

Process finished with exit code 0

您确定您的原始字符串以 mg/kg 结尾吗?在您尝试 removeEnd 之前将字符串的内容转储到 sysout,或使用调试器检查该值。

如果您怀疑末尾有控制字符,您可以使用另一个 commons-lang 实用程序来显示字符串:

StringEscapeUtils.escapeJava(value)
于 2018-04-21T21:13:49.600 回答