#java #file
#java #файл
Вопрос:
Я помню, как делал что-то идентичное в 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() amp;amp; 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");
}
}
Я уверен, что об этом уже спрашивали раньше, но, похоже, я не могу найти ничего, связанного с этой темой.
Комментарии:
1. Как вы «разобрали строку до запятой» в Python?
2. спасибо, что указали на орфографическую ошибку, сейчас я найду код
3. @ImNotWill —
passCheck.split(",")[0]
выдаст вам строку перед запятой.4. да, я использовал .split, когда у меня был аналогичный код на python, попробую это сейчас
Ответ №1:
Насколько я понимаю, вы можете сделать что-то вроде этого
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.Строка)
Комментарии:
1. использовал .split(), как предложил @ArvindKumarAvinish, но я также ознакомлюсь с этим методом спасибо за вашу помощь
Ответ №2:
может быть, слишком просто, но попробуйте
...
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(",.*", "");
...
несмотря на то, что я думаю, что регулярное выражение здесь излишне … но аккуратно