[英]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();
也許太簡單了,但試試
...
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.