使用 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);
}
我有遵循这种格式的文本日志文件:
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);
}