如何在没有正则表达式的情况下拆分字符串

2022-09-02 09:18:03

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

查找索引(按 indexOf 和 lastIndexOf)不使用正则表达式,因此

String target = ".";
String someString = "123.456";
int index = someString.indexOf(target); // index == 3

给我我需要的索引。

但是,我也想使用此“目标”来拆分一些字符串。但现在目标字符串被解释为正则表达式字符串。因此,当我想拆分字符串时,我不能使用与以前相同的目标字符串...

String target = ".";
String someString = "123.456";
String[] someStringSplit = someString.split(target); // someStringSplit is an empty array

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

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

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


答案 1

您需要逃离“目标”才能将其用作正则表达式。尝试

String[] someStringSplit = someString.split(Pattern.quote(target));

并让我知道这是否有帮助。


答案 2

String::splitdo 拆分没有正则表达式,如果正则表达式是:

  • 一个字符字符串,并且此字符不是正则表达式的元字符之一.$|()[{^?*+\\
  • 两个字符的字符串,第一个字符是反斜杠,第二个字符不是 ascii 数字或 ascii 字母。

有关详细信息,请参阅源代码。String::split()

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