拆分字符

时间:2017-12-22 07:55:38

标签: java android html

我的字符是“!;%@****(,{ {1}}“从XML获取。当我用')'拆分它时,我丢失了','。

我该怎么做才能避免它。 我已经尝试将逗号更改为“&#002C”,但它不起作用。

我想要的结果是“,!;%@,( “,但不是”)!;%@(

4 个答案:

答案 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(",(?!,)|(?<!,),"));

这个正则表达式用逗号分隔,逗号前面跟不是逗号的东西,或后面跟不是逗号的东西。

请注意,您的格式字符串,即用逗号分隔的每个字符序列,都是错误设计,因为您既可以使用逗号作为序列,也可以使用逗号要使用的多个字符。这意味着你也可以将它们结合起来!

例如,如果我想使用这两个字符序列:

  • ,
  • ,,,,

然后我构建格式化字符串,如下所示:,,,,,,。目前尚不清楚,,,,,应该是字符序列,还是,,,,,