在文本文件中查找字符串。然后得到以下行,并需要按索引细分和子字符串

问题描述 投票:0回答:2

在文本文件中查找字符串。然后获得以下行,并除以indexOf()substring()

import java.util.*; 
import java.io.*;

public class FileReadTest {

    public static void main(String[] args) throws IOException {
        File f = new File("a.dat");
        Scanner fin = new Scanner(f);
        String airportcode = "HOI";

        while (fin.hasNextLine()) {
            String line = fin.nextLine();
            int firstindex = line.indexOf(airportcode);

            if (firstindex > 0) {
                int Code = line.indexOf("|");
                int Country = line.lastIndexOf("|",Code);
                int State = line.indexOf("|", Country);
                int City = line.indexOf("|", State);
                int Airport = line.indexOf("|", City);
                System.out.println(Code);
                System.out.println(Country);
                System.out.println(State);
                System.out.println(City);
                System.out.println(Airport);
                System.out.println(line.substring(0, Code));
                break;
            }
        }

        fin.close();
    }
}

1出口看起来像这样:French Polynesia|HOI|Hao|Tuamotos|Hao Airport我只需要使用indexOf()substring(),但我需要这样:

French Polynesia
HOI
Hao
Tuamotos
Hao Airport

我该怎么办?

java string substring java.util.scanner indexof
2个回答
0
投票

假设:

  • 文件内容包含具有以下结构的行:French Polynesia|HOI|Hao|Tuamotos|Hao Airport
  • 您只需要打印包含"HOI"字符串的行
  • 您仅需使用indexOfsubstring

这里是适合您的代码段(文件a.dat位于resources文件夹中:]

package example;

import java.util.*; // for Scanner
import java.io.*; // for File and IOException

public class FileReadTest {

    public static void main(String[] args) throws IOException {
        File f = new File(
            Objects.requireNonNull(FileReadTest.class.getClassLoader().getResource("a.dat")).getFile()
        );
        Scanner fin = new Scanner(f);
        String airportcode = "HOI";
        while (fin.hasNextLine()) {
            String line = fin.nextLine();
            if (line.indexOf(airportcode) != -1) {
                int firstindex;
                while ((firstindex = line.indexOf("|")) != -1) {
                    System.out.println(line.substring(0, firstindex));
                    line = line.substring(firstindex + 1);
                }
            }
        }
    }
}

0
投票

从假设您始终具有相同数量的字段开始,在情况5中用字符|分隔,您可以不使用String split方法而是仅使用indexOfsubstring来解决问题,如下所示:

String s = "French Polynesia|HOI|Hao|Tuamotos|Hao Airport";
for (int i = 0; i < 4; ++i) {
    int endIndex = s.indexOf("|");
    System.out.println(s.substring(0, endIndex));
    s = s.substring(endIndex + 1);
}

该代码将打印可以分配给您的不同变量的所有字段。

© www.soinside.com 2019 - 2024. All rights reserved.