Java 我如何替换第二个“之间的所有内容?”&引用;和“;:”;在爪哇?
一直在网上研究,但还没有找到解决方案 我在Java中获得了以下字符串“555.8.0.i5:790.2.0.i19:904.1.0:8233.2:” 什么是最好的方法,我可以删除一切,包括第二个点的结肠? 我希望字符串以如下方式结束:Java 我如何替换第二个“之间的所有内容?”&引用;和“;:”;在爪哇?,java,regex,Java,Regex,一直在网上研究,但还没有找到解决方案 我在Java中获得了以下字符串“555.8.0.i5:790.2.0.i19:904.1.0:8233.2:” 什么是最好的方法,我可以删除一切,包括第二个点的结肠? 我希望字符串以如下方式结束:555.8:790.2:904.1:8233.2: 我在另一篇帖子上看到有人用java正则表达式引用了第二个点(\d+。\d.),但我不确定如何进行修剪 编辑: 我尝试了以下java正则表达式.replaceAll(“\\.(.*?”,“:”)但它似乎删除了第一个点
555.8:790.2:904.1:8233.2:
我在另一篇帖子上看到有人用java正则表达式引用了第二个点(\d+。\d.),但我不确定如何进行修剪
编辑:
我尝试了以下java正则表达式
.replaceAll(“\\.(.*?”,“:”)代码>但它似乎删除了第一个点的所有内容。不知道如何从第二个点开始修剪。在您的情况下,您可以使用
.replaceAll("(\\.[^:.]+)\\.[^:]+", "$1")
见
详细信息:
(\\.[^:.]+)
-捕获组1捕获点和1+字符,而不是文字点和冒号
\\.
-文字点
[^::::+
-1+个字符,冒号除外
在替换模式中,仅使用组1中捕获的值的$1
反向引用。您必须使用正则表达式吗?下面是一个使用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:
显示您的尝试。使用String.indexOf和String.substring。或者使用迭代+复制方法和简单的状态引擎来决定跳过什么。“这并不难。”沃尔夫很快就发帖了。