使用Java8截断动态值



在我的一个应用程序中,我曾经获得一些参考编号,如下所示

BRD.2323-6984-4532-4444..0
BRD.2323-6984-4532-4445..1
BRD.2323-6984-4532-4446
BRD.2323-6984-4532-4446..5
:
:

如何截断结尾…[n]如果它在Java中包含,如下所示。如果它是一个常数,我会有子字符串它像.substring(0, value.indexOf("..0")),因为数字是动态的我应该使用正则表达式吗?

BRD.2323-6984-4532-4444
BRD.2323-6984-4532-4445
BRD.2323-6984-4532-4446
BRD.2323-6984-4532-4446
:
:

有人能帮我一下吗?

您可以在这里使用正则表达式替换:

String input = "BRD.2323-6984-4532-4444..0";
String output = input.replaceAll("\.\.\d+$", "");
System.out.println(input);   // BRD.2323-6984-4532-4444..0
System.out.println(output);  // BRD.2323-6984-4532-4444

注意,上面的替换不会改变任何没有两个末尾点和数字的引用号。

我注意到其中一个在修改时会导致重复。下面是@TimBiegeleisen给出的答案。它将消除重复项。

List<String> values = List.of(
"BRD.2323-6984-4532-4444..0",
"BRD.2323-6984-4532-4445..1",
"BRD.2323-6984-4532-4446",
"BRD.2323-6984-4532-4446..5");
UnaryOperator<String> modify = str->str.replaceAll("\.\.\d+$", "");
Set<String> set = values.stream()
.map(modify::apply)
.collect(Collectors.toSet());
set.forEach(System.out::println);

打印

BRD.2323-6984-4532-4444
BRD.2323-6984-4532-4445
BRD.2323-6984-4532-4446

相关内容

  • 没有找到相关文章

最新更新