java - 如何分离字符串

标签 java arrays string arraylist

如何分隔(?abcd.efgdf)字符串?

我想要得到的是 "?abcd""efgdf" 分开并转移到另一个字符串容器。

我知道 split(".") 的用法,但是如果有两个这样的字符串怎么办? 前任。 (?abcd.efgdf) (?xcv.qwer) 分割第二个字符串包含第一个字符串的结尾,即“efgdf”。所以使用 split(".") 不是一个选择。

是否有任何分离此字符串的实现?

最佳答案

您可以使用正则表达式\(|\.|\)\s*\(|\)\??

DEMO

它包括所有这些分隔符:

  1. ( 第一个左括号
  2. . 句点
  3. )\s*( 括号之间可选空格s
  4. ) 右括号
  5. ? 第 4 点后面的可选问号 .

但它可能会创建一些空字符串,因此使用 java 8 流,您可以删除它们。这是代码

测试用例 1

String s = "(?abcd.efgdf)?";
String[] arr = Arrays.asList(s.split("\\(|\\.|\\)\\s*\\(|\\)\\??")).stream().filter(str -> !str.isEmpty()).collect(Collectors.toList()).toArray(new String[0]);
for (String a: arr) System.out.println(a);

输出

?abcd
efgdf

测试用例2

String s = "(?abcd.efgdf) (?xcv.qwer)";
String[] arr = Arrays.asList(s.split("\\(|\\.|\\)\\s*\\(|\\)\\??")).stream().filter(str -> !str.isEmpty()).collect(Collectors.toList()).toArray(new String[0]);
for (String a: arr) System.out.println(a);

输出

?abcd
efgdf
?xcv
qwer

关于java - 如何分离字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42596588/

相关文章:

c - 这个 chomp 函数中的分隔符是什么?

c# - 是否存在 Rope 数据结构比字符串生成器更高效的场景

java - 构建的java类不代表变化

java - 如何计算球的下一个方向

java - 如何将线程分配给某种数据类型?

java - 如果从 jar 运行,带有嵌入式 jetty 的 Spring 应用程序找不到 webdefault.xml

php - MySQL字符串中数组的多少个值

c# - 我需要在 C# 中创建二维数组

ios - 如何将 Swift 数组转换为字符串?

测试 "0"、 "-0"、 "0.0"、 "00"时的 PHP 和 Perl 行为