【发布时间】:2016-08-19 11:36:53
【问题描述】:
在我的 Java 应用程序中,我需要在两种情况下都使用 same “目标”来查找索引和拆分字符串。目标只是一个点。
查找索引(通过 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
所以我需要以下任一:
- 一种通过非正则表达式目标拆分为数组的方法
- 一种将非正则表达式目标字符串“转换”为正则表达式字符串的方法
有人可以帮忙吗?您是否同意标准 Java 平台使用正则表达式进行“拆分”而不使用正则表达式进行“indexOf”似乎有点奇怪?
【问题讨论】:
-
为什么不能简单地在拆分正则表达式中转义小数点?
-
您可以将 substring 方法与您的 indexOf 一起使用,并提取令牌之前的字符串和之后的字符串。也就是说,如果你真的想避免使用
split。 -
@cricket_007:如果我理解正确,你建议我使用
target = "\\."。那我就不行了someString.indexOf(target); -
@AntonH:恐怕我需要一个比这更通用的解决方案......
-
@Birger 如果您想要更通用的解决方案,则必须提供更高的精度。
indexOf是一个字符还是多个?还是带有特殊字符?你确定只有一个分隔符,或者可能有几个吗?你试图做的不是重新发明正则表达式是什么?