java - 如何使用 "%*%"作为分隔符在 Java 中拆分字符串,包括字符串结果列表中的分隔符?

标签 java regex

我正在寻找标记化字符串的最简单方法,例如

       INPUT                       OUTPUT
"hello %my% world" -> "hello ", "%my%", " world"

在 Java 中。是否可以使用正则表达式来完成此操作?我基本上是在寻找一个 String.split() ,它采用“%*%”形式的东西作​​为分隔符,但不会像通常那样忽略它。

谢谢

最佳答案

不,您不能按照您解释的方式执行此操作。原因是——它是模棱两可的!

你举个例子:

"hello %my% world"-> "hello ", "%my%", "world"

% 应该附加到字符串之前还是之后?

输出应该是

“你好”,“%我”,“%世界”

或者,也许输出应该是

“你好%”、“我的%”、“世界”

在您的示例中,您不遵循这些规则中的任何一个。你想出了 %my%,它首先将分隔符附加到它出现的 after 字符串,然后附加到它出现的 before 字符串。

你看到歧义了吗?

因此,您首先需要制定一套明确的规则,说明您希望将分隔符附加到何处。一旦你这样做了,一个简单的(虽然不是特别有效,因为字符串是不可变的)实现你想要的方法是:

  1. 使用String.split()以正常方式拆分字符串
  2. 按照您的规则集将分隔符重新添加到字符串中应有的位置。

关于java - 如何使用 "%*%"作为分隔符在 Java 中拆分字符串,包括字符串结果列表中的分隔符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14035694/

相关文章:

java - 确保异步线程在 ui 线程上运行

java - 由于安全规则,Firestore 上出现 "PERMISSION_DENIED"问题

java - 在 Swing 的 EDT 中实现线程?

regex - 解析输出并获取十六进制颜色

regex - 如何在单词开头或单词内部找到三个相同的字母

ruby - 有什么办法可以缩短这个正则表达式吗?

java.lang.IllegalArgumentException : Wrong FS: , 预期:hdfs://localhost:9000

java - 支柱 1.2 : html:options does not find a collection from a bean

php - 如何preg_replace括号内的特定字符?

javascript - regex101.com 忽略的非捕获组