使用 Java Scanner class ,如何获取特定字符串之后的最新数字?

Using Java Scanner class ,how do I get the most recent number which comes after specific String?

我有遵循这种格式的文本日志文件:

18:27:08.231 [main] DEBUG sample_client - This is a DEBUG message, line 39 Location 7 18:27:09.231 [main] DEBUG sample_client - This is anr DEBUG message, line 39 Location 17 18:27:10.231 [main] DEBUG sample_client - This is a DEBUG message, line 56 Location 23

我想获取字符串 "Location" 之后的最新整数 - 这里是 23。

以下是我目前的扫描仪 class :

 import org.apache.logging.log4j.flume; */
// import org.slf4j.Logger;
// import org.slf4j.LoggerFactory;


import java.sql.Timestamp;
import java.util.Date;
import java.util.*;
import java.io.*;
import java.net.*;

public class ScannerTest {  /* BEGINBRAC */



    public static void main(String[] args) throws IOException { 
        int mostRecentLocation = 0;
        Scanner scanner = new Scanner ("LogbackTutorialError.txt");         

        while (scanner.hasNextLine() ) {

            final String lineFromFile = scanner.nextLine();

            if(lineFromFile.contains("Location")){

                System.out.print("the location is " + mostRecentLocation );
            }

        }


    }

}// end class ScannerTest

如何获取位置之后的最新号码?

下面的代码展示了如何创建它。

import java.sql.Timestamp;
import java.util.Date;
import java.util.*;
import java.io.*;
import java.net.*;

public class ScannerTest {  

    public static void main(String[] args) throws FileNotFoundException { 
        int mostRecentLocation = 0;
        File newFile = new File("LogbackTutorialError.log");
        Scanner scanner = new Scanner (newFile);         
        int result = 0;
        while (scanner.hasNextLine() ) {
            String lineFromFile = scanner.nextLine();       
            Scanner lineScanner = new Scanner(lineFromFile);
            if(lineScanner.findInLine("Location") != null){
              result = lineScanner.nextInt() ;
              mostRecentLocation = result;           
            }

        }
        System.out.println(" The location is  : " + result );


    }

}// end class ScannerTest

您可以使用 String.substring(int) 来删除 Location 上的所有内容。像,

if (lineFromFile.startsWith("Location")) {
    int mostRecentLocation = Integer.parseInt(lineFromFile
            .substring(1 + "Location".length()).trim());
    System.out.println("the location is " + mostRecentLocation);
}