我一直在寻找基于定界符拆分字符串的单步过程,仅一次,仅当定界符出现在特定索引之后时。 例如。
输入:字符串--> my-city-hasa-dash, 分隔符--> "-", index --> "3"
虽然第一个定界符出现在第 3 个位置,但它不是 > 提供的索引。所以正则表达式应该查找下一次出现的定界符 > 索引并拆分仅一次。
输出[]:{"mycity", "hasadash"}
输入:字符串--> m-ycityhasadash, 分隔符--> "-", index --> "3" delimeter 的索引小于提供的索引。所以不需要拆分。 输出[]:{“mycityhasadash”}
最佳答案
如果您使用的是 Java 8,您可以使用:
String[] output = Arrays.asList(
str.replaceAll("^(.{0,2})-", "$1").split("-", 2))
.stream()
.map(x -> x.replace("-", ""))
.toArray(String[]::new);
输出
my-city-hasa-dash - [mycity, hasadash]
m-ycityhasadash - [mycityhasadash]
详情
str.replaceAll("^(.{0,2})-", "$1")
会替换前三个字符之前的所有-
<.split("-", 2)
将字符串拆分两次.map(x -> x.replace("-", ""))
替换结果输出中的所有-
.toArray(String[]::new)
将结果收集到数组中
看看:
关于java - 如果定界符出现在给定索引之后,则仅根据定界符在 Java 中拆分字符串一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48550411/