2013-01-15 10 views
5

tak, przeczytałem kilka innych postów na temat przerw w linii, ale one nie pomagają mi.jak wykrywać podziały linii w java

Mój program w języku Java powinien odczytać plik .PHP i podzielić kod źródłowy na format wiersz po linii. Problem polega na tym, że naprawdę nie potrafię odróżnić jednej linii od drugiej.

Próbuję użyć/n nie działał .... Próbuję użyć/r/n praca zrobił .....

tutaj jest przykładem

step_B = step_A.replaceAll("\n", "XXX"); 

próbowałem zastępuje znaki końca linii słowem XXX, ale nie działa.

tutaj jest próbka php, który chciałem podzielić, udało mi się oddzielić linie za pomocą; jako ogranicznik, ale muszę go teraz udoskonalić.

$ALL_AUTH = mysql_fetch_row($author_lookup); 
    //preparing to display the output in the table 
    echo "<tr>"; 

chciałem go do wyjścia coś takiego

INFO: $ALL_AUTH = mysql_fetch_row($author_lookup) 

INFO: //preparing to display the output in the table 

INFO: echo "<tr>" 

ale zamiast ja dostać ten

INFO: $ALL_AUTH = mysql_fetch_row($author_lookup) 

INFO: //preparing to display the output in the table echo "<tr>" 

aplikacja nie może wydawać się wykryć, że jest znak nowej linii po komentarz kończy się na słowo "stół". czy jest jakiś sposób na zrobienie tego? najlepiej bez kodowania na sztywno tablicy słów lub czegoś podobnego.

Ohhhh znalazłem błąd, użyłem transformacji za pomocą jakiegoś regexa na bloku kodu na wcześniejszym etapie i to zawiodło newlines ... blok kodu stał się masywną linią tekstu! dlatego nie ma żadnych podziałów dzięki za twój czas chłopaki!

+1

Separator "\ n" jest używany w systemie Windows. Zawsze możesz uzyskać separator linii używany przez bieżący system operacyjny za pomocą [System.lineSeparator()] (http://docs.oracle.com/javase/7/docs/api/java/lang/System.html#lineSeparator%28 % 29) - jeśli korzystasz z Java 7. Dla starszych wersji możesz użyć 'System.getProperty (" line.separator ")'. Pamiętaj, że będzie to przydatne tylko wtedy, gdy pliki zostaną utworzone w tym samym systemie operacyjnym, co Ty. – Fallup

Odpowiedz

14

Jeśli dane już w ciąg znaków:

String[] lines = string.split("\r\n|\r|\n"); 
for (String line : lines) { 
    System.out.println(line); 
} 

lub przeczytać wiersze bezpośrednio z pliku:

BufferedReader br = new BufferedReader(new FileReader("myfilename")); 
String line = null; 
while ((line = br.readLine()) != null) { 
    System.out.println(line); 
} 

Java 7+ ma metodę wygodę czytania wierszy bezpośrednio z system plików:

Path path = FileSystems.getDefault().getPath("myfilename"); 
List<String> lines = Files.readAllLines(path, Charset.defaultCharset()); 
for (String line : lines) { 
    System.out.println(line); 
} 

Java nie wykonuje automatycznego wykrywania zestawu znaków, więc odpowiada za ustawienie e zestaw znaków poprawnie podczas odczytu pliku tekstowego; w przeciwnym razie znaki mogą nie zostać odczytane poprawnie. Nie zapominaj o tym, aby być uporządkowanym: .close() twoje uchwyty plików.

+2

To lub bezpośrednio użyj 'BufferedReader', aby odczytać plik tekstowy wiersz po linii. – Neet

0

Wierzę, że mam rozwiązanie. Masz rację, że/n nic nie robi. Jednak java oddziela linie przy użyciu \n. Zwróć uwagę na ukośnik odwrotny zamiast ukośnika.

Spróbuj użyć \n zamiast /n

EDIT

Właściwie, po prostu ponownie odczytać kod. Według tego zrobiłeś to właściwie. Tylko upewnij się, że twój rzeczywisty kod jest właśnie taki. W przeciwnym razie ta odpowiedź nie pomoże, ale może pomóc innym.

1

W zależności od klasy Java, której używasz do czytania PHP, użyj czegoś takiego jak BufferedReader.readLine. Spowoduje to przechwycenie linii tekstu bez obawy o szaleństwo w postaci \n lub .

Powiązane problemy