如何在没有长度和索引的情况下获取字符串中的信息。 (JAVA)
How to obtain the info inside a String without length and indexOF. (JAVA)
我有一个 api 其中 returns 一个字符串,格式如下:
ACTNEW_38_0001,ACTO_57999
我需要提取数值(57999,或 38_0001)但是:
1:它们可以按不同的顺序到达。
2:只能到其中一个。
3:一定要轻。
我大概知道怎么做了。我的实际代码看起来或多或少是这样的:
private final String tipoActivity = "ACTO_";
private String obtenerSplitOldElem(String toSplit) {
if(toSplit.contains(",")) {
String[] split = toSplit.split(",");
int element = ArrayUtils.indexOf(toSplit, "ACTO_");
String split2[] = split[element-1];
return split2[1];
} else {
String[] split = split.split("ACTO_");
return split[1];
}
return "";
}
事情是这样的:
1:我觉得应该有更好的方法来实现。
2:我还没试过 arrayUtils.indexOf
。如果它不起作用,我将不得不做一个包含,可能在 for 循环内,但我认为对于如此简单的事情来说这是个坏主意。
如有任何帮助,我们将不胜感激。谢谢
您可以在 CSV 字符串上使用正则表达式查找所有方法:
String input = "ACTNEW_38_0001,ACTO_57999";
List<String> nums = Pattern.compile("\d+(?:_\d+)*")
.matcher(input)
.results()
.map(MatchResult::group)
.collect(Collectors.toList());
System.out.println(nums); // [38_0001, 57999]
我有一个 api 其中 returns 一个字符串,格式如下:
ACTNEW_38_0001,ACTO_57999
我需要提取数值(57999,或 38_0001)但是:
1:它们可以按不同的顺序到达。
2:只能到其中一个。
3:一定要轻。
我大概知道怎么做了。我的实际代码看起来或多或少是这样的:
private final String tipoActivity = "ACTO_";
private String obtenerSplitOldElem(String toSplit) {
if(toSplit.contains(",")) {
String[] split = toSplit.split(",");
int element = ArrayUtils.indexOf(toSplit, "ACTO_");
String split2[] = split[element-1];
return split2[1];
} else {
String[] split = split.split("ACTO_");
return split[1];
}
return "";
}
事情是这样的:
1:我觉得应该有更好的方法来实现。
2:我还没试过 arrayUtils.indexOf
。如果它不起作用,我将不得不做一个包含,可能在 for 循环内,但我认为对于如此简单的事情来说这是个坏主意。
如有任何帮助,我们将不胜感激。谢谢
您可以在 CSV 字符串上使用正则表达式查找所有方法:
String input = "ACTNEW_38_0001,ACTO_57999";
List<String> nums = Pattern.compile("\d+(?:_\d+)*")
.matcher(input)
.results()
.map(MatchResult::group)
.collect(Collectors.toList());
System.out.println(nums); // [38_0001, 57999]