من مطمئن هستم که شما در موقعیتی قرار گرفته اید که می خواهید چندین خط را به هم متصل کنید. اگر به زبان جاوا نمی نوشتید، احتمالاً از تابعی استفاده کرده اید
join()
که توسط خود زبان برنامه نویسی در اختیار شما قرار داده شده است. اگر در جاوا نوشتید، به یک دلیل ساده نمیتوانید این کار را انجام دهید - این روش وجود نداشت. کتابخانه کلاس استاندارد در جاوا ابزارهایی را برای ایجاد برنامههای رابط کاربری گرافیکی، دسترسی به پایگاههای داده، ارسال دادهها از طریق شبکه، انجام تبدیل XML یا فراخوانی روشها از کتابخانههای شخص ثالث در اختیار شما قرار میدهد. یک روش ساده برای الحاق مجموعه ای از رشته ها گنجانده نشده است. برای انجام این کار، به یکی از بسیاری از کتابخانه های شخص ثالث نیاز دارید. خوشبختانه این به پایان رسیده است! در جاوا 8 در نهایت می توانیم رشته ها را به هم متصل کنیم! جاوا 8 کلاس جدیدی به نام اضافه کرد StringJoiner
. همانطور که از نام آن پیداست، می توانیم از این کلاس برای به هم پیوستن رشته ها استفاده کنیم:
StringJoiner joiner = new StringJoiner(",");
joiner.add("foo");
joiner.add("bar");
joiner.add("baz");
String joined = joiner.toString(); // "foo,bar,baz"
// add() calls can be chained
joined = new StringJoiner("-")
.add("foo")
.add("bar")
.add("baz")
.toString(); // "foo-bar-baz"
String
از دو روش استاتیک جدید استفاده می کند join() StringJoiner
:
// join(CharSequence delimiter, CharSequence... elements)
String joined = String.join("/", "2014", "10", "28" ); // "2014/10/28"
// join(CharSequence delimiter, Iterable<? extends CharSequence> elements)
List<String> list = Arrays.asList("foo", "bar", "baz");
joined = String.join(";", list); // «foo;bar;baz"
Collector
همچنین، برای الحاق رشتهها، یک مورد خاص در API جدید با استفاده از جریانها وجود دارد :
List<Person> list = Arrays.asList(
new Person("John", "Smith"),
new Person("Anna", "Martinez"),
new Person("Paul", "Watson ")
);
String joinedFirstNames = list.stream()
.map(Person::getFirstName)
.collect(Collectors.joining(", ")); // "John, Anna, Paul»
به این ترتیب، دیگر به کتابخانه های شخص ثالث برای به هم پیوستن رشته ها نیازی نداریم! مقاله اصلی
GO TO FULL VERSION