一直在线研究,但未能找到解决方案。
我在Java中有以下字符串'555.8.0.i5:790.2.0.i19:904.1.0:8233.2:'。
什么是最好的方法,我可以删除所有内容,包括第二个点到结肠?
我希望字符串最终看起来像这样:555.8:790.2:904.1:8233.2:
我在另一篇文章中看到有人用java regex引用了第二个点(\ d +。\ d。),但我不确定如何修剪。
编辑:
我尝试了以下java正则表达式.replaceAll("\\.(.*?):", ":");
,但似乎从第一个点删除了所有内容。不知道如何从第二个点修剪它。
答案 0 :(得分:0)
在您的情况下,您可以使用
.replaceAll("(\\.[^:.]+)\\.[^:]+", "$1")
请参阅regex demo
<强>详情:
(\\.[^:.]+)
- 捕获第1组捕获点和除了字面点和冒号以外的1 +字符\\.
- 一个文字点[^:]+
- 除结肠以外的1个字符。在替换模式中,仅使用对组1中捕获的值的$1
反向引用。
答案 1 :(得分:0)
你必须使用正则表达式吗?这是一个使用Java的解决方案:
public static void main(String[] args) {
String myString = "555.8.0.i5:790.2.0.i19:904.1.0:8233.2:";
StringBuilder sb = new StringBuilder();
//Split the string into an array of strings at each colon
String[] stringParts = myString.split(":");
//Loop over each substring
for (String stringPart : stringParts) {
//Find the index of the second dot
int secondDotIndex = stringPart.indexOf('.', 1 + stringPart.indexOf('.', 1));
//If a second dot exists then remove everything after and including the dot
if (secondDotIndex != -1) {
stringPart = stringPart.substring(0, secondDotIndex);
}
//Append each string part and colon back to the final string
sb.append(stringPart);
sb.append(":");
}
System.out.println(sb.toString());
}
最终的println打印555.8:790.2:904.1:8233.2: