簡體   English   中英

讀取文本文件中的一個字符

[英]Reading up to a character in a text file

我記得在 Python 中做了相同的事情並發現它很容易,但我似乎無法在 Java 中找到解決方案。 我基本上需要編寫程序來讀取文本文件,但只需要每行的第一部分。

文本文件目前看起來像

測試1,測試1
測試2,測試2
測試3,測試3

我有一個驗證系統,所以當用戶注冊時,它會檢查用戶名尚未被使用。 我只需要能夠在沒有密碼的情況下檢查用戶名,或者換句話說,讀取逗號之前的行。 我已經有了檢查登錄用戶名和密碼的代碼,如下所示

String user = userText.getText();
String pString = String.valueOf(passwordText.getPassword());
File file = new File("C:/Users/Will/Desktop/UnPs.txt");
boolean found = false;
Scanner scan = null;
try {
    scan = new Scanner(file);
} catch (FileNotFoundException e1) {
    // TODO Auto-generated catch block
    e1.printStackTrace();
}
while(scan.hasNextLine() && found == false) {           
    String passCheck = scan.nextLine();     
    if(passCheck.equals(user + "," + pString)) {
        System.out.println("Found");
        found = true;
    }
    else if(!passCheck.equals(user + "," + pString)) {
        System.out.println("not found");
    }
}

我確定以前有人問過這個問題,但我似乎找不到與該主題相關的任何內容。

據我了解,你可以做這樣的事情

Scanner read = new Scanner (new File("C:/Users/Will/Desktop/UnPs.txt"));
   read.useDelimiter(",");
   String name, pwd;

   while(read.hasNext())
   {
       name = read.next();
       pwd= read.next();
       
     System.out.println(name+ " " + pwd + "\n"); //just for debugging
   }
   read.close();

或者使用拆分方法: https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html#split(java.lang.String)

也許太簡單了,但試試

...
String nameCheck = scan.nextLine();
if (nameCheck.startsWith(userName + ",")) {
    ...

真正得到每一行的名稱:

...
String line = scan.nextLine();
int comma = line.indexOf(',');
if (comma != -1) {
  String name = line.substring(0, comma);
  ...
} else {
  //no comma? error message, or just ignore
}

或使用正則表達式:

...
String line = scan.nextLine();
String name = line.replaceFirst(",.*", "");
...

盡管我認為正則表達式在這里有點矯枉過正......但很整潔

暫無
暫無

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

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