正斜杠会导致 StringUtils.remove 和 .removeEnd 出现问题吗?
Would a forward slash cause issues with StringUtils.remove and .removeEnd?
我正在使用 JSoup 从网页中提取一段文本,并使用 Apache 的 StringUtils 库清理生成的字符串。第一步,使用 substringBetween
只获取括号中的文本,就像一个魅力,返回一个数字字符串 (value
),后跟单位(例如,2500mg/kg)。
但是当我尝试使用 removeEnd
删除尾随单位 (mg/kg) 时:
value = StringUtils.removeEnd(value, "mg/kg");
...我总是得到完全不变的原始字符串——2500mg/kg。
我尝试只使用普通的 remove
和 removeEndIgnoreCase
(以防万一),但我什么也做不了。
首先我尝试了这个作为替代:
value = value.substring(0, value.indexOf("m"));
... 这适用于几次测试,然后失败了(??)。然后我尝试了:
value = StringUtils.substring(value, 0, -5);
这似乎工作正常,但我并不喜欢它,因为它没有具体说明要删除的内容。我真的更喜欢在这里使用 removeEnd
(或类似的东西)(加上我是新手,所以我总是想知道 为什么 某些东西不起作用)。
任何人都可以阐明我做错了什么吗?我在 StringUtils 文档中找不到对特殊字符的任何限制,但是正斜杠是否会导致问题?还是我应该担心不可见的控制字符?
对我有用(使用 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)
我正在使用 JSoup 从网页中提取一段文本,并使用 Apache 的 StringUtils 库清理生成的字符串。第一步,使用 substringBetween
只获取括号中的文本,就像一个魅力,返回一个数字字符串 (value
),后跟单位(例如,2500mg/kg)。
但是当我尝试使用 removeEnd
删除尾随单位 (mg/kg) 时:
value = StringUtils.removeEnd(value, "mg/kg");
...我总是得到完全不变的原始字符串——2500mg/kg。
我尝试只使用普通的 remove
和 removeEndIgnoreCase
(以防万一),但我什么也做不了。
首先我尝试了这个作为替代:
value = value.substring(0, value.indexOf("m"));
... 这适用于几次测试,然后失败了(??)。然后我尝试了:
value = StringUtils.substring(value, 0, -5);
这似乎工作正常,但我并不喜欢它,因为它没有具体说明要删除的内容。我真的更喜欢在这里使用 removeEnd
(或类似的东西)(加上我是新手,所以我总是想知道 为什么 某些东西不起作用)。
任何人都可以阐明我做错了什么吗?我在 StringUtils 文档中找不到对特殊字符的任何限制,但是正斜杠是否会导致问题?还是我应该担心不可见的控制字符?
对我有用(使用 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)