有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

JAVAutil。扫描器使用Java扫描器类,如何获取特定字符串后面的最新数字?

我有以下格式的文本日志文件:

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

以下是迄今为止我的扫描仪类:

 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

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


共 (2) 个答案

  1. # 1 楼答案

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

    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
    
  2. # 2 楼答案

    您可以使用^{}来删除Location上的所有内容。大概

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