2013-01-15 51 views
5

có tôi đã đọc một số bài đăng khác về ngắt dòng nhưng chúng không giúp tôi.cách phát hiện ngắt dòng trong java

Chương trình Java của tôi được cho là đọc tệp .PHP và chia mã nguồn thành một dòng theo định dạng đường. vấn đề là tôi không thể thực sự phân biệt được một ngắt dòng từ một điểm khác.

tôi đã cố gắng để sử dụng/n didnt làm việc .... tôi đã cố gắng để sử dụng/r/n làm việc didnt .....

đây là một ví dụ

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

tôi đã cố gắng để thay thế các ngắt dòng bằng từ XXX nhưng nó không hoạt động.

đây là mẫu của php tôi muốn tách, tôi đã quản lý để tách các dòng bằng cách sử dụng; như delimiter nhưng tôi đã tinh chỉnh nó nhiều hơn một chút.

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

tôi muốn nó một cái gì đó ra như thế này

INFO: $ALL_AUTH = mysql_fetch_row($author_lookup) 

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

INFO: echo "<tr>" 

nhưng thay vào đó tôi có được điều này

INFO: $ALL_AUTH = mysql_fetch_row($author_lookup) 

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

ứng dụng dường như không thể phát hiện rằng có một dòng mới sau khi bình luận kết thúc vào từ "bảng". Có cách nào để làm việc này không ? tốt nhất là không mã hóa cứng bảng từ hoặc bất cứ thứ gì như thế.

Ohhhh tôi đã tìm thấy sai lầm, tôi đã sử dụng phép biến đổi thông qua một số regex trên khối mã ở giai đoạn trước và làm sai dòng mới .... khối mã đã trở thành một dòng văn bản lớn! do đó không có ngắt dòng cảm ơn các bạn thời gian!

+1

Dấu phân cách "\ n" được sử dụng trên Windows. Bạn luôn có thể lấy dấu phân cách dòng được hệ điều hành hiện tại của bạn sử dụng bởi [System.lineSeparator()] (http://docs.oracle.com/javase/7/docs/api/java/lang/System.html#lineSeparator%28 % 29) - nếu bạn đang sử dụng Java 7. Đối với các phiên bản cũ hơn, bạn có thể đi với 'System.getProperty (" line.separator ")'. Chỉ cần lưu ý rằng điều này sẽ hữu ích chỉ khi các tập tin được tạo trên cùng một hệ điều hành như bạn có. – Fallup

Trả lời

14

Nếu bạn có các dữ liệu đã có trong một String:

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

Hoặc đọc các dòng trực tiếp từ một tập tin:

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

Java 7+ có một phương pháp thuận tiện để đọc các dòng trực tiếp từ hệ thống tệp:

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

Java không phát hiện bộ ký tự tự động, vì vậy bạn chịu trách nhiệm thiết lập thứ e charset chính xác khi đọc một tập tin văn bản; nếu không các ký tự có thể không được đọc chính xác. Đừng quên gọn gàng: .đóng() tập tin của bạn xử lý.

+2

Điều này hoặc trực tiếp sử dụng một 'BufferedReader' để đọc dòng tệp văn bản theo dòng. – Neet

0

Tôi tin rằng tôi có giải pháp. Bạn đúng trong thực tế là/n không có gì. Tuy nhiên, java phân tách các dòng bằng cách sử dụng \n. Lưu ý dấu gạch chéo ngược thay vì dấu gạch chéo.

Hãy thử sử dụng \n thay vì /n

EDIT

Thực ra, tôi chỉ đọc lại mã của bạn. Theo đó bạn đã làm đúng. Chỉ cần đảm bảo mã thực của bạn là như vậy. Nếu không, câu trả lời này không giúp bạn, nhưng nó có thể giúp đỡ người khác.

1

Tùy thuộc vào lớp Java bạn sử dụng để đọc PHP, sử dụng một cái gì đó như BufferedReader.readLine. Nó sẽ lấy một dòng văn bản cho bạn mà không cần phải lo lắng về việc \n hoặc \r\n điên rồ.

Các vấn đề liên quan