【问题标题】:Find substring between two strings查找两个字符串之间的子字符串
【发布时间】:2014-12-07 11:18:20
【问题描述】:

我有一个字符串,例如:
file = "UserTemplate324.txt"

我想提取“324”。如果没有像 Apache StringUtils 这样的外部库,我该如何做到这一点?

【问题讨论】:

  • 那么会有不同名称的文件吗?因为如果你只想要这个文件的 324,那很容易
  • 我会通过字符串for-each,如果当前字符没问题,我会将它们复制到一个字符数组中。在for-each 之后,我将从数组中构建新字符串。

标签: java string


【解决方案1】:

假设您想要“点之前的数字”:

String number = str.replaceAll(".*?(\\d+)\\..*", "$1");

这使用正则表达式来查找和捕获数字并用它们替换整个输入。

需要注意的是使用非贪婪量词来消耗最小的前导输入(以免也消耗数字的前导部分)。

【讨论】:

  • 谢谢,但是当我尝试这个时,它显示“无效的转义序列...”
  • @assylias 是完全正确的。我添加了额外的反斜杠。
【解决方案2】:

如果要排除非数字字符:

String number = file.replaceAll("\\D+", "");

\\D+ 表示一系列一个或多个非数字 (0-9) 字符,您将任何此类系列替换为 "" 即什么都没有,只留下数字。

【讨论】:

  • 就可以了。谢谢你。你能解释一下第一部分吗?
  • 这是一个很好的简单解决方案 (+1),如果它适合您的文件名,我会使用它,但请注意,如果输入为 "foo123bar456.txt",则结果将为 "123456" (不是"456")
猜你喜欢
  • 2020-05-28
  • 2013-09-13
  • 1970-01-01
  • 2011-03-23
  • 1970-01-01
相关资源
最近更新 更多