3

我正在尝试使用 Java 在另一个字符串中找到一系列字符:

String input = "test test2 Test3";
String substring = "test2";

int diffStart = StringUtils.indexOf(input, substring);
int diffEnd = StringUtils.lastIndexOf(input, substring);

我想得到

  • 差异开始 = 5
  • 差异结束 = 10

但我越来越

  • 差异开始 = 5
  • 差异结束 = 5

基于 Apache 的 Commons lastIndexOf函数,它应该可以工作:

公共静态int lastIndexOf(CharSequence seq,CharSequence searchSeq)

查找 CharSequence 中的最后一个索引,处理 null。如果可能,此方法使用 String.lastIndexOf(String)。

StringUtils.lastIndexOf("aabaabaa", "ab") = 4

我究竟做错了什么?

4

1 回答 1

3

你可能想要

diffStart = String.valueOf(StringUtils.indexOf(strInputString02, strOutputDiff));
diffEnd = diffStart + strOutputDiff.length();

lastIndexOf 找到匹配的字符串,但它的最后一个实例。

例如 ab1 ab2 ab3 ab4

lastindexof("ab") 找到第 4 个 ab

indexof("ab") 找到第一个 ab(位置 0)

但是,它们总是返回第一个字符的位置。

如果子字符串只有一个实例,lastindexof 和 indexof 将给出相同的索引。

(为了进一步增强您的示例,您可能还需要进行一些 -1 检查,以防子字符串根本不存在)

于 2016-10-03T14:37:53.507 回答