使用 Java8 截断动态值
Truncate a dynamic value using 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's 答案可能会证明这是有用的。它将消除重复项。
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
在我的一个应用程序中,我曾经得到一些参考号,如下所示
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's 答案可能会证明这是有用的。它将消除重复项。
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