Tôi có chuỗi như
"I am a boy".
Tôi muốn in như thế này
"I
am
a
boy".
Ai có thể giúp tôi?
Tôi có chuỗi như
"I am a boy".
Tôi muốn in như thế này
"I
am
a
boy".
Ai có thể giúp tôi?
Câu trả lời:
System.out.println("I\nam\na\nboy");
System.out.println("I am a boy".replaceAll("\\s+","\n"));
System.out.println("I am a boy".replaceAll("\\s+",System.getProperty("line.separator"))); // portable way
Bạn cũng có thể sử dụng System.lineSeparator()
:
String x = "Hello," + System.lineSeparator() + "there";
System.getProperty("line.separator")
.
String x = "Hello, %n there";
. Thêm không gian xung quanh %n
chỉ vì mục đích dễ đọc.
System.out.printf("I %n am %n a %n boy");
I
am
a
boy
Tốt hơn là sử dụng %n
như một ký tự dòng mới độc lập của hệ điều hành thay vì\n
và dễ dàng hơn sử dụngSystem.lineSeparator()
Tại sao nên sử dụng %n
, bởi vì trên mỗi HĐH, dòng mới đề cập đến một bộ ký tự khác nhau;
Unix and modern Mac's : LF (\n)
Windows : CR LF (\r\n)
Older Macintosh Systems : CR (\r)
LF là từ viết tắt của Line Feed và CR là từ viết tắt của Vận chuyển trở lại . Các ký tự thoát được viết bên trong dấu ngoặc đơn. Vì vậy, trên mỗi hệ điều hành, dòng mới là viết tắt của một cái gì đó cụ thể cho hệ thống. %n
là hệ điều hành bất khả tri, nó là xách tay. Nó là viết tắt của \n
các hệ thống Unix hoặc \r\n
trên các hệ thống Windows, v.v. Do đó, không sử dụng \n
, thay vào đó sử dụng %n
.
Nó có thể được thực hiện một số cách. Tôi đang đề cập đến 2 cách đơn giản.
Cách rất đơn giản như dưới đây:
System.out.println("I\nam\na\nboy");
Nó cũng có thể được thực hiện với nối như sau:
System.out.println("I" + '\n' + "am" + '\n' + "a" + '\n' + "boy");
Thử:
System.out.println("I\nam\na\nboy");
Để làm cho mã di động đến bất kỳ hệ thống nào, tôi sẽ sử dụng:
public static String newline = System.getProperty("line.separator");
Điều này rất quan trọng vì các HĐH khác nhau sử dụng các ký hiệu khác nhau cho dòng mới: Windows sử dụng "\ r \ n", Classic Mac sử dụng "\ r" và cả Mac và Linux đều sử dụng "\ n".
Bình luận viên - vui lòng sửa cho tôi nếu tôi sai về điều này ...
\n
được sử dụng để tạo dòng riêng biệt;
Thí dụ:
System.out.print("I" +'\n'+ "am" +'\n'+ "boy");
Kết quả:
I
am
boy
Nếu bạn chỉ đơn giản muốn in một dòng mới trong bảng điều khiển, bạn có thể sử dụng ắc \ nẻ cho các dòng mới.
Nếu bạn muốn ngắt văn bản trong các thành phần swing, bạn có thể sử dụng html:
String s = "<html>first line<br />second line</html>";
Nếu bạn muốn có mã os không đặc hiệu, bạn nên sử dụng println cho mỗi từ
System.out.println("I");
System.out.println("am");
System.out.println("a");
System.out.println("boy");
bởi vì Windows sử dụng "\ r \ n" làm hệ thống dòng mới và unixoid chỉ sử dụng "\ n"
println luôn sử dụng đúng
println()
thêm một ký tự dòng mới ở cuối chuỗi (không phải đầu).
System.lineSeparator()
hoặc System.getProperty("line.separator")
có thể được sử dụng để làm cho hệ thống mã độc lập.
Điều gì về việc %n
sử dụng một định dạng như thế String.format()
nào?
String s = String.format("I%nam%na%nboy");
Như câu trả lời này nói, nó có sẵn từ java 1.5 và là một cách khác để System.getProperty("line.separator")
hoặc System.lineSeparator()
, như hai cái này, là độc lập với hệ điều hành .
Phá vỡ dòng độc lập với nền tảng
finalString = "bandham" + System.lineSeparator() + "manikanta";
System.out.println(finalString);
Đầu ra:
bandham
manikanta
Ghi chú:
Java 6: System.getProperty("line.separator") Java 7 & above: System.lineSeparator()
Ví dụ chương trình đầy đủ, với một twist thú vị:
Mở một tài liệu trống mới và lưu nó dưới dạng %yourJavaDirectory%/iAmABoy/iAmABoy.java
. "iAmABoy" là tên lớp.
Dán đoạn mã sau vào và đọc qua nó. Hãy nhớ rằng, tôi là người mới bắt đầu, vì vậy tôi đánh giá cao tất cả thông tin phản hồi!
//The class name should be the same as your Java-file and directory name.
class iAmABoy {
//Create a variable number of String-type arguments, "strs"; this is a useful line of code worth memorizing.
public static void nlSeparated(String... strs) {
//Each argument is an str that is printed.
for (String str : strs) {
System.out.println(str);
}
}
public static void main(String[] args) {
//This loop uses 'args' . 'Args' can be accessed at runtime. The method declaration (above) uses 'str', but the method instances (as seen below) can take variables of any name in the place of 'str'.
for (String arg : args) {
nlSeparated(arg);
}
//This is a signature. ^^
System.out.print("\nThanks, Wolfpack08!");
}
}
Bây giờ, trong terminal / cmd, duyệt đến %yourJavaDirectory%/iAmABoy
và gõ:
javac iAmABoy.java
java iAmABoy I am a boy
Bạn có thể thay thế các đối số I am a boy
bằng bất cứ điều gì!
args
trực tiếp đến nlSeparated()
hoặc thực hiện nlSeparated()
lấy vô hướng String
thay vì một mảng. Lựa chọn đầu tiên có lẽ tốt hơn. Ngoài ra, in chữ ký của bạn với println
thay vì print
.
main
, thay thế for (String arg : args) { nlSeparated(arg); }
bằng chỉ nlSeparated(args);
. nlSeparated
đã chấp nhận một danh sách của String
s. Để được giải thích rõ hơn, xem tại đây: stackoverflow.com/a/12534579/2988730
Tôi sử dụng mã này String result = args[0].replace("\\n", "\n");
public class HelloWorld {
public static void main(String[] args) {
String result = args[0].replace("\\n", "\n");
System.out.println(result);
}
}
với thiết bị đầu cuối tôi có thể sử dụng arg I\\nam\\na\\boy
để System.out.println
in ra
I
am
a
boy
bạn có thể sử dụng <br>
thẻ trong chuỗi của mình để hiển thị trong các trang html