гуава
С Гуава , вы можете написать что-то вроде этого:
import com.google.common.base.*;
import com.google.common.collect.*;
//...
String doctors = "doc_vijayan,doc_zubair,doc_Raja";
Function<String,String> chopAndCap =
new Function<String,String>() {
@Override public String apply(String from) {
return from.substring(4, 5).toUpperCase()
+ from.substring(5);
}
};
Iterable<String> docs = Splitter.on(',').split(doctors);
docs = Iterables.transform(docs, chopAndCap);
doctors = Joiner.on(", ").join(docs);
System.out.println(doctors);
// Vijayan, Zubair, Raja
Итак, конкретные логические шаги:
- Определите
Function
для выполнения броска и кепки
- Используйте
Splitter
, чтобы разбить на Iterable<String>
Iterables.transform
каждый элемент с использованием вышеуказанного Function
- Используйте
Joiner
, чтобы присоединиться от преобразованного Iterable
обратно к String
Если вам нравится такой стиль программирования, вы можете просто собрать весь процесс в одну плавную операцию:
System.out.println(
Joiner.on(", ").join(
Iterables.transform(
Splitter.on(',').split(doctors),
new Function<String,String>() {
@Override public String apply(String from) {
return from.substring(4, 5).toUpperCase()
+ from.substring(5);
}
}
)
)
);
// Vijayan, Zubair, Raja
Apache Commons Lang
С помощью Apache Commons Lang вы можете написать что-то вроде этого:
import org.apache.commons.lang.*;
//...
String doctors = "doc_vijayan,doc_zubair,doc_Raja";
String[] docs = StringUtils.split(doctors, ',');
for (int i = 0; i < docs.length; i++) {
docs[i] = StringUtils.capitalize(
StringUtils.substringAfter(docs[i], "doc_")
);
}
doctors = StringUtils.join(docs, ", ");
System.out.println(doctors);
// Vijayan, Zubair, Raja
Обратите внимание, что если вы используете Guava и Apache Commons Lang, вы можете использовать функцию StringUtils.capitalize/substringAfter
in chopAndCap
выше.