رشته چندخطی در جاوا – به زبان ساده
با توجه به این واقعیت که کلاس رشته چندخطی نیتیو هنوز در جاوا عرضه نشده است، ایجاد و استفاده از رشتههای چندخطی در این زبان کمی دشوار است. در این راهنما با چند روش برای ایجاد و استفاده از رشته چندخطی در جاوا آشنا خواهیم شد.
دریافت جدا کننده خط
هر سیستم عامل ممکن است روش خاص خود را برای تعریف کردن و شناسایی خطوط جدید متن داشته باشد. دریافت جداکننده خط یک سیستم عامل در زبان جاوا کار آسانی است:
1String newLine = System.getProperty("line.separator");
ما قصد داریم از newline در بخش بعدی برای ایجاد رشتههای چندخطی استفاده کنیم.
الحاق رشتهها
الحاق رشتهها یک متد نیتیو آسان است که میتواند برای ایجاد رشتههای چندخطی استفاده شود:
1public String stringConcatenation() {
2 return "Get busy living"
3 .concat(newLine)
4 .concat("or")
5 .concat(newLine)
6 .concat("get busy dying.")
7 .concat(newLine)
8 .concat("--Stephen King");
9}
استفاده از عملگر + یک روش دیگر برای رسیدن به نتیجه مشابه است. کامپایلرهای جاوا ()concat و عملگر + را به روشی یکسانی ترجمه میکنند:
1public String stringConcatenation() {
2 return "Get busy living"
3 + newLine
4 + "or"
5 + newLine
6 + "get busy dying."
7 + newLine
8 + "--Stephen King";
9}
اتصال رشته
جاوای نسخه 8 اقدام به معرفی String#join کرده است که یک جداکننده همراه با تعدادی رشته به عنوان ورودی میگیرد و رشته نهایی که همه رشتههای ورودی را به صورت متصل به هم دارد بازگشت میدهد:
1public String stringJoin() {
2 return String.join(newLine,
3 "Get busy living",
4 "or",
5 "get busy dying.",
6 "--Stephen King");
7}
رشتهساز
StringBuilder یک کلاس کمک است که رشتهها را میسازد. در نسخه 1.5 جاوا معرفی شده است و جایگزینی برای StringBuffer محسوب میشود. رشتهساز گزینه مناسبی برای ساخت رشتههای بزرگ در یک حلقه به حساب میآید:
1public String stringBuilder() {
2 return new StringBuilder()
3 .append("Get busy living")
4 .append(newLine)
5 .append("or")
6 .append(newLine)
7 .append("get busy dying.")
8 .append(newLine)
9 .append("--Stephen King")
10 .toString();
11}
رشتهنویس
StringWriter متد دیگری است که میتوان برای ایجاد رشتههای چندخطی مورد استفاده قرار داد. در این متد نیازی به «کاراکتر خط جدید» (newLine) وجود ندارد، زیرا از PrintWriter استفاده میکنیم. تابع PrintIn به صورت خودکار خطوط جدید را اضافه میکند:
1public String stringWriter() {
2 StringWriter stringWriter = new StringWriter();
3 PrintWriter printWriter = new PrintWriter(stringWriter);
4 printWriter.println("Get busy living");
5 printWriter.println("or");
6 printWriter.println("get busy dying.");
7 printWriter.println("--Stephen King");
8 return stringWriter.toString();
9}
اتصالدهنده Guava
شاید استفاده از یک کتابخانه خارجی برای کارهایی ساده مانند تولید رشتههای چندخطی معنای چندانی نداشته باشد، با این حال اگر پروژه از قبل از این کتابخانه برای مقاصد دیگر استفاده میکند، میتوان از آن به این منظور نیز بهره گرفت. برای نمونه کتابخانه Guava گوگل کاربرد فراوانی در این زمینه دارد. Guava یک متد Joiner دارد که توانایی ساخت رشتههای چندخطی را دارد:
1public String guavaJoiner() {
2 return Joiner.on(newLine).join(ImmutableList.of("Get busy living",
3 "or",
4 "get busy dying.",
5 "--Stephen King"));
6}
بارگذاری از یک فایل
جاوا فایلها را دقیقاً همچنان که هستند میخواند، این بدان معنی است که اگر یک رشته چندخطی در یک فایل متنی داشته باشیم، باید همان رشته را در زمان خواندن رشته نیز به دست بیاوریم. روشهای زیادی برای خواندن یک فایل در جاوا وجود دارند. در عمل بهترین رویه جداسازی رشتههای طولانی از کد است:
1public String loadFromFile() throws IOException {
2 return new String(Files.readAllBytes(Paths.get("src/main/resources/stephenking.txt")));
3}
استفاده از قابلیتهای IDE
بسیاری از IDE-های مدرن از کپی کردن و چسباندن چندین خط به صورت همزمان پشتیبانی میکنند. Eclipse و IntelliJ IDEA مواردی از چنین IDE-هایی به حساب میآیند. بدین ترتیب میتوانیم یک رشته چندخطی را کپی کرده و درون گیومههای دوتایی در این IDE-ها بچسبانیم. بدیهی است که این متد برای ایجاد رشته در زمان اجرا کاربردی ندارد، اما یک روش آسان و سریع برای به دست آوردن رشتههای چندخطی محسوب میشود.
سخن پایانی
در این راهنما با چندین روش برای ساختن رشتههای چندخطی در جاوا آشنا شدیم. خبر خوب این است که جاوا 13 پشتیبانی نیتیو از رشتههای چندخطی دارد. البته همه روشهایی که در این نوشته مطرح کردیم در نسخه جاوا 13 همچنان کاربرد دارند. همه کدهای مطرح شده در این نوشته را میتوانید در این ریپوی گیتهاب (+) ملاحظه کنید.
اگر این مطلب برای شما مفید بوده است، آموزشهای زیر نیز به شما پیشنهاد میشوند:
- مجموعه آموزشهای برنامهنویسی جاوا
- مجموعه آموزشهای برنامهنویسی
- آموزش ساخت ربات تلگرام با جاوا
- زبان برنامه نویسی جاوا (Java) — از صفر تا صد
- چگونه از ArrayList در جاوا استفاده کنیم؟
==