【问题标题】:Contains with lastIndexOf?包含 lastIndexOf?
【发布时间】:2012-10-10 21:08:45
【问题描述】:

是否可以将 java 包含与 lastIndexOf 一起使用?

我正在从文件中获取一些信息,并且需要获取它的最后一次出现。

文件看起来像这样

17,560.0
17,583.0
17,606.0

我正在使用类似的东西。

System.out.println(lines.indexOf("17"));

但是它不会工作,因为它会查找 17,并且不会再占用了。 有什么办法吗?

【问题讨论】:

  • 我不太明白你在做什么,你能详细说明一下吗?
  • lastIndexOf 返回参数中(确切)字符串的最后一个索引。没有什么可以解决的。你想得到什么?也许您想在该字符串最后一次出现后抓取文本(在本例中为“17”)?
  • 将 lastIndexOf 与 contains() 一起使用是什么意思? lastIndexOf() 返回一个整数, contains() 将 Object 作为参数。 “线条”是什么类型?
  • 你是如何排列这些值的,是字符串数组还是逗号分隔值?
  • 我已经将 txt 文件中的信息传递到一个名为 lines 的列表中。我需要抓住最后一行包含一个 17(这是 id),然后使用拆分我可以抓住“,”之后的剩余内容。我想他们是更好的方法,我只是在做一些不需要的事情。

标签: java list indexing


【解决方案1】:

假设您的行位于List<String> lines 或类似的位置,我将对那些lines 进行反向迭代,检查它是否以所需的值开头。例如:

for (int i = lines.size() - 1; i >= 0; i--) {
    if (lines.get(i).startsWith("17") {
        return lines.get(i);
    }
}

请注意,我们从 lines.size() - 1 开始并以 0 结束,因为 List 索引是从零开始的。

【讨论】:

  • 忘记我的回答。我也会按照@mthmulders 的建议去做。
【解决方案2】:

没有。您将需要遍历该集合以获取那种lastIndexOf

类似:

int li = -1, i=0;
for (line : lines) {
    if (line.startsWith("17")) {
       li = i;
    }
    i++
}

然后您将获得最后一个索引的li 值,其中一行以17 开头。如果li-1,则找不到以17 开头的值。

【讨论】:

    猜你喜欢
    • 2020-07-21
    • 2018-07-03
    • 1970-01-01
    • 2015-03-24
    • 2014-02-18
    • 2020-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多