我的字符是“!
,;
,%
,@
,**
,**
,(
,{ {1}}“从XML获取。当我用')
'拆分它时,我丢失了',
'。
我该怎么做才能避免它。 我已经尝试将逗号更改为“&#002C”,但它不起作用。
我想要的结果是“,
,!
,;
,%
,@
,,
,(
“,但不是”)
,!
,;
,%
,@
,,
(
“
答案 0 :(得分:2)
String::split使用正则表达式,因此您可以使用此正则表达式((?<!,),|,(?!,))
进行拆分:
String string = "!,;,%,@,,,(,)";
String[] split = string.split("((?<!,),|,(?!,))");
详细
(?<!,),
匹配逗号(如果之前没有逗号|
或,(?!,)
匹配逗号(如果后面没有逗号输出
!
;
%
@
,
(
)
答案 1 :(得分:0)
如果您尝试从字符串中提取所有字符,可以使用String.toCharArray()
[1]来完成:
String str = "sample string here";
char[] char_array = s.toCharArray();
如果您只想迭代字符串中的字符,可以使用从上面的方法获得的字符数组,或者使用for循环和str.charAt(i)
[2]来访问位置i处的字符。
[1] https://docs.oracle.com/javase/7/docs/api/java/lang/String.html#toCharArray() [2] https://docs.oracle.com/javase/7/docs/api/java/lang/String.html#charAt(int)
答案 2 :(得分:0)
试试这个,这可能会有所帮助。首先,我更换了,&#39;用其他字符串做分裂。完成其他字符串替换为&#39;,&#39;
public static void main(String[] args) {
String str = "!,;,%,@,**,**,(,)";
System.out.println(str);
str = str.replace("**,**","**/!/**");
String[] array = str.split(",");
System.out.println(Arrays.stream(array).map(s -> s.replace("**/!/**", ",")).collect(Collectors.toList()));
}
out put
!,;,%,@,**,**,(,)
[!, ;, %, @, ,, (, )]
答案 3 :(得分:0)
首先,我们需要定义逗号是实际分隔符的时间,以及它是字符序列的一部分。
我们需要假设逗号包围的逗号序列是我们想要捕获的实际字符序列。它可以通过外观来完成:
String s = "!,;,,,%,@,**,**,,,,(,)";
List<String> list = Arrays.asList(s.split(",(?!,)|(?<!,),"));
这个正则表达式用逗号分隔,逗号前面跟不是逗号的东西,或后面跟不是逗号的东西。
请注意,您的格式字符串,即用逗号分隔的每个字符序列,都是错误设计,因为您既可以使用逗号作为序列,也可以使用逗号要使用的多个字符。这意味着你也可以将它们结合起来!
例如,如果我想使用这两个字符序列:
,
,,,,
然后我构建格式化字符串,如下所示:,,,,,,
。目前尚不清楚,
和,,,,
应该是字符序列,还是,,
和,,,
。