如何分割没有正则表达式

gro*_*190 10 java regex string split

在我的Java应用程序中,我需要在两种情况下使用相同的 "目标" 找到索引和拆分字符串.目标只是一个点.

查找索引(通过indexOf和lastIndexOf)不使用正则表达式,所以

String target = ".";
String someString = "123.456";
int index = someString.indexOf(target); // index == 3
Run Code Online (Sandbox Code Playgroud)

给了我需要的索引.

但是,我也想用这个"目标"来分割一些字符串.但现在目标字符串被解释为正则表达式字符串.所以当我想拆分字符串时,我不能像以前一样使用相同的目标字符串...

String target = ".";
String someString = "123.456";
String[] someStringSplit = someString.split(target); // someStringSplit is an empty array
Run Code Online (Sandbox Code Playgroud)

所以我需要以下任何一种:

  1. 一种通过非正则表达式目标分割成数组的方法
  2. 一种将非正则表达式目标字符串"转换"为正则表达式字符串的方法

有人可以帮忙吗?您是否同意标准java平台使用正则表达式进行"拆分"而不使用正则表达式"indexOf"似乎有点奇怪?

Tim*_*ton 21

您需要逃避"目标"才能将其用作正则表达式.尝试

String[] someStringSplit = someString.split(Pattern.quote(target));
Run Code Online (Sandbox Code Playgroud)

如果有帮助,请告诉我.


Mik*_*neu 6

String::split如果正则表达式是:则不使用正则表达式进行拆分:

  • 一个单字符字符串,并且该字符不是 RegEx 的元字符之一.$|()[{^?*+\\
  • 双字符字符串,第一个字符是反斜杠,第二个字符不是 ascii 数字或 ascii 字母。

String::split()详细信息请参见源代码。

对于转义的“.” 目标它将在没有正则表达式的情况下被分割。