تبدیل آرایه به رشته در جاوا — راهنمای جامع
در این راهنما قصد داریم به بررسی روشهای تبدیل آرایه به رشته در جاوا و همچنین تبدیل رشتهها به آرایه در این زبان برنامهنویسی بپردازیم. این کار با استفاده از جاوای خالص و همچنین کلاسهای کاربردی جاوا در کتابخانههای رایج قابل انجام است.
تبدیل آرایه به رشته در جاوا
برخی اوقات لازم است یک آرایه از رشتهها یا عدد صحیح را به یک رشته تبدیل کنیم، اما متأسفانه هیچ روش مستقیمی برای اجرای این تبدیل در جاوا وجود ندارد. پیادهسازی پیشفرض متد ()toString روی یک آرایه باعث میشود چیزی مانند Ljava.lang.String;@74a10858 بازگشت یابد که صرفاً به ما نشان میدهد نوع شیء چیست و هش کد آن کدام است.
با این حال کلاس کاربردی java.util.Arrays امکان دستکاری آرایهها و رشتهها را فراهم ساخته است و شامل متد ()toString برای آرایهها است. ()Arrays.toString یک رشته با محتوای آرایه ورودی بازگشت میدهد. این رشته جدید یک فهرست جدا شده از کاما از عناصر آرایه است که درون براکت قرار گرفته است:
1String[] strArray = { "one", "two", "three" };
2String joinedString = Arrays.toString(strArray);
3assertEquals("[one, two, three]", joinedString);
1int[] intArray = { 1,2,3,4,5 };
2joinedString = Arrays.toString(intArray);
3assertEquals("[1, 2, 3, 4, 5]", joinedString);
با این که متد Arrays.toString(int[]) موجب سهولت اجرای این کار برای شما شده است، اما در ادامه روشهای مختلف دیگری که برای پیادهسازی این تبدیل وجود دارد را نیز مقایسه میکنیم تا با همه روشها آشنا شویم.
متد ()StringBuilder.append
در آغاز به بررسی روش اجرای تبدیل با متد ()StringBuilder.append میپردازیم:
1String[] strArray = { "Convert", "Array", "With", "Java" };
2StringBuilder stringBuilder = new StringBuilder();
3for (int i = 0; i < strArray.length; i++) {
4 stringBuilder.append(strArray[i]);
5}
6String joinedString = stringBuilder.toString();
7assertEquals("ConvertArrayWithJava", joinedString);
به علاوه برای تبدیل یک آرایه از اعداد صحیح، میتوانیم از همان رویکرد بهره بگیریم، اما هنگام الحاق به StringBuilder به جای آن، متد Integer.valueOf(intArray[i]) را فراخوانی میکنیم.
یک API جاوا به نام Streams
جاوا 8 و بالاتر متد ()String.join را عرضه کردهاند که یک رشته جدید را با الحاق عناصر آرایه به هم میسازند و یا آنها را با یک کاراکتر جداکننده از هم جداسازی میکنند.
1String joinedString = String.join("", new String[]{ "Convert", "With", "Java", "Streams" });
2assertEquals("ConvertWithJavaStreams", joinedString);
به علاوه میتوانیم از متد ()Collectors.joining از API جاوا به نام Streams استفاده کنیم که رشتهها را از Stream به همان ترتیب آرایه مبدأ به هم الحاق میکند:
1String joinedString = Arrays
2.stream(new String[]{ "Convert", "With", "Java", "Streams" })
3.collect(Collectors.joining());
4assertEquals("ConvertWithJavaStreams", joinedString);
متد ()StringUtils.join
همان طور که میدانید Apache Commons Lang همواره برای اجرای چنین وظایفی آماده است. کلاس StringUtils چند متد ()StringUtils.join دارد که میتوان برای تغییر دادن آرایه رشتهها به صورت یک رشته منفرد استفاده کرد:
1String joinedString = StringUtils.join(new String[]{ "Convert", "With", "Apache", "Commons" });
2assertEquals("ConvertWithApacheCommons", joinedString);
متد ()Joiner.join
Guava نیز این کار را با استفاده از کلاس Joiner اجرا میکند. کلاس Joiner یک API خوب دارد و چند متد مفید برای الحاق دادهها عرضه کرده است. برای نمونه میتوانیم مقادیر null را جدا کرده و یا نادیده بگیریم:
1String joinedString = Joiner.on("")
2 .skipNulls()
3 .join(new String[]{ "Convert", "With", "Guava", null });
4assertEquals("ConvertWithGuava", joinedString);
تبدیل رشته به آرایهای از رشتهها
برخی اوقات نیز لازم است که یک رشته را به صورت آرایهای افراز کنیم که شامل زیرمجموعهای از رشته ورودی است و به وسیله کاراکتر جداساز خاصی از هم جدا شده است. در ادامه روشهای مختلف اجرای این کار را نیز بررسی میکنیم.
متد ()String.split
ابتدا کار خود را با افراز کردن کاراکترهای فاصله با استفاده از متد ()String.split بدون هیچ جداسازی آغاز میکنیم:
1String[] strArray = "loremipsum".split("");
که نتیجه آن چنین است:
1["l", "o", "r", "e", "m", "i", "p", "s", "u", "m"]
متد ()StringUtils.split
در وهله دوم دوباره به بررسی کلاس StringUtils از کتابخانه Apache’s Commons Lang میپردازیم.
از میان بسیاری از متدهای null-safe روی اشیای رشته، میتوانیم ()StringUtils.split را بیابیم. این متد به صورت پیشفرض، کاراکتر فاصله را به عنوان جداساز در نظر میگیرد:
1String[] splitted = StringUtils.split("lorem ipsum dolor sit amet");
نتیجه آن چنین است:
1["lorem", "ipsum", "dolor", "sit", "amet"]
اما میتوانیم در صوت تمایل یک کاراکتر جداساز نیز تعیین کنیم.
متد ()Splitter.split
در نهایت میتوانیم از Guava به همراه API Splitter نیز استفاده کنیم:
1List<String> resultList = Splitter.on(' ')
2 .trimResults()
3 .omitEmptyStrings()
4 .splitToList("lorem ipsum dolor sit amet");
5String[] strArray = resultList.toArray(new String[0]);
نتیجه اجرای آن چنین است:
1["lorem", "ipsum", "dolor", "sit", "amet"]
سخن پایانی
در این مقاله شیوه تبدیل یک آرایه به رشته و تبدیل رشته به آرایه با استفاده از core Java و همچنین کتابخانههای کاربردی رایج جاوا را مورد بررسی قرار دادیم. پیادهسازی همه این مثالها و قطعه کدهای مرتبط را میتوانید در این ریپوی گیتهاب (+) ملاحظه کنید.
اگر این مطلب برای شما مفید بوده است، آموزشهای زیر نیز به شما پیشنهاد میشوند: