gpt4 book ai didi

java - 在正则表达式中分割任意数量的特殊字符并给出数组大小

转载 作者:行者123 更新时间:2023-12-02 10:33:11 25 4
gpt4 key购买 nike

我有 s 字符串,其中 * 可以是任意数字。我使用的正则表达式模式一开始不会 split 。我不想执行 String.substring() 来删除开头的 * 。我可能有类似 "***place1*place2**place3*" 的内容。或者类似 placeStr=**

 String placeStr="*place1*place2**place3*";
String[] places=placeStr.split("(\\*)+");
System.out.println("array size" + places.length);

此外,在使用 String.split("(\\*)+") 删除 placeStr=** 时,如果输入字符串为类似***。在这种情况下,我得到的数组大小为 1。但我希望数组大小为零,因为数组内没有位置。我想要计算的是位置的数量。

最佳答案

如果您不想在分割时处理空字符串,以防开头有多个星号,只需替换开头的星号,然后进行简单的分割即可。

示例代码,

public static void main(String[] args) {
String placeStr = "***place1*place2**place3*";
placeStr = placeStr.replaceAll("^[*]+", "");
String[] places = placeStr.split("[*]+");
System.out.println("places.length: " + places.length);
Arrays.asList(places).forEach(System.out::println);
}

打印,

places.length: 3
place1
place2
place3

请告诉我这是否是您想要做的。

编辑答案以澄清拆分:

考虑您的代码,

String placeStr="*place1*place2**place3*";
String[] places=placeStr.split("(\\*)+");
System.out.println("array size: " + places.length);

你会得到,

array size: 4

因为字符串中的第一个星号 split 并给出空字符串。但是如果你删除字符串开头的所有星星并使你的代码像这样,

String placeStr="place1*place2**place3*";
String[] places=placeStr.split("(\\*)+");
System.out.println("array size: " + places.length);

然后这将输出数组大小为,

array size: 3

字符串中最后一个星号(或任何字符)字符的行为与第一个字符不同,并且在拆分时,它们不会在最后一个数组元素中给出空字符串。

这就是 Java 中通过正则表达式分割字符串的方式。如果您有其他期望,请告诉我,可能是因为您说它给了您错误的输出。

希望这能澄清。

另外,你能告诉我你想从逻辑上实现什么吗?

关于java - 在正则表达式中分割任意数量的特殊字符并给出数组大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53485856/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com