Piszę program Java, aby odczytać plik i wydrukować inną zmienną łańcuchową. która działa idealnie zgodnie z przeznaczeniem.
{
String key = "";
FileReader file = new FileReader("C:/Users/raju/Desktop/input.txt");
BufferedReader reader = new BufferedReader(file);
String line = reader.readLine();
while (line != null) {
key += line;
line = reader.readLine();
}
System.out.println(key); //this prints contents of .txt file
}
powoduje to wydrukowanie całego tekstu w pliku, ale chcę wydrukować tylko te wiersze, aż w pliku napotka słowo END.
przykład: jeśli plik input.txt zawiera następujący tekst: ten plik testowy KONIEC dodatkowo w
powinien drukować tylko: ten plik testowy
Odpowiedzi:
0 dla odpowiedzi № 1Po prostu zrób prosty indexOf, aby zobaczyć, gdzie to jest ijeśli istnieje w linii. Jeśli instancja zostanie znaleziona, jedną z opcji byłoby użycie podłańcucha, aby odciąć wszystko aż do indeksu słowa kluczowego. Aby uzyskać nieco większą kontrolę, spróbuj użyć wyrażeń regularnych Java.
String key = "";
FileReader file = new FileReader("C:/Users/raju/Desktop/input.txt");
BufferedReader reader = new BufferedReader(file);
String line = reader.readLine();
while ((line = reader.readLine()) != null && line.indexOf("Keyword to look for") == -1)
key += line;
System.out.println(key);
-1 dla odpowiedzi № 2
Możesz to zrobić na wiele sposobów. jeden z nich używa indexOf
metoda określenia indeksu początkowego „END” na wejściu, a następnie za pomocą subString
metoda.
Aby uzyskać więcej informacji, przeczytaj dokumentację String
calss. TUTAJ
-1 dla odpowiedzi nr 3
To zadziała dla twojego problemu.
public static void main(String[] args) throws IOException {
String key = "";
FileReader file = new FileReader("/home/halil/khalil.txt");
BufferedReader reader = new BufferedReader(file);
String line = reader.readLine();
while (line != null) {
key += line;
line = reader.readLine();
} String output = "";
if(key.contains("END")) {
output = key.split("END")[0];
System.out.println(output);
}
}
-1 dla odpowiedzi № 4
Musisz zmienić logikę, aby sprawdzić, czy wiersz zawiera „END”.
Jeśli END nie zostanie znaleziony w linii, dodaj linię do łańcucha klucza w swoim programie
Jeśli tak, podziel tę linię na tablicę słów, czytaj ją, aż napotkasz słowo „KONIEC” i dołącz go do łańcucha kluczy. Rozważ użycie programu Stringbuilder jako klucza.
while (line != null) {
line = reader.readLine();
if(!line.contains("END")){
key += line;
}else{
//Note that you can use split logic like below, or use java substring
String[] words = line.split("");
for(String s : words){
if(s.equals("END")){
return key;
}
key += s;
}
}
}