簡體   English   中英

使用Java Scanner類,如何獲取特定String后面的最新數字?

[英]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-這是一條DEBUG消息,第39行7位置18:27:09.231 [main] DEBUG sample_client-這是an DEBUG消息,第39行,位置17 18:27:10.231 [main] DEBUG sample_client-這是一條DEBUG消息,第56行位置23

我想獲取字符串“ Location”之后的最新整數-這里是23。

以下是我到目前為止的Scanner類:

 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

如何獲取位置信息后的最新號碼?

您可以使用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);
}

以下代碼顯示了如何創建它。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM