Java String Метод - PullRequest
       1

Java String Метод

1 голос
/ 19 августа 2010

У меня строковая переменная, разделенная запятыми, например:

String doctors = "doc_vijayan,doc_zubair,doc_Raja" 

Но я хочу удалить «doc_» из вышеуказанной строки, и первая буква должна отображаться заглавной Мне нужен вывод, как это:

String doctors1 = "Vijayan, Zubair, Raja"

Как это сделать?

Ответы [ 5 ]

5 голосов
/ 19 августа 2010

Вы можете попробовать это:

public String splitDoctors(String doctorsString){
    String[] doctors = doctorsString.split(",");
    boolean isFirst = true;
    StringBuilder sb = new StringBuilder();
    for(String doctor : doctors){
        if(!isFirst){
            sb.append(", ");
        }else{
            isFirst = false;
        }
        sb.append(doctor.substring(4,5).toUpperCase());
        sb.append(doctor.substring(5));
    }
    return sb.toString();
}
3 голосов
/ 20 августа 2010

гуава

С Гуава , вы можете написать что-то вроде этого:

    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 выше.

1 голос
/ 20 августа 2010
String regex = "doc_.";
Matcher matcher = Pattern.compile(regex).matcher(doctors);
StringBuffer sb = new StringBuffer();
while (matcher.find()) {
    String group = matcher.group();
    int i = group.length() - 1;
    matcher.appendReplacement(sb, String.valueOf(group.charAt(i)).toUpperCase());
}
matcher.appendTail(sb);
System.out.print(sb.toString());
1 голос
/ 19 августа 2010
final String[] docs = doctors.split(",");
final StringBuilder sb = new StringBuilder();
for (final String d : docs) {
   String doct = d.replace("doc_", "");
   doct = doct.subString(0,1).toUpperCase() +  doct.subString(1).toLowerCase();
   sb.append(sb.length() > 0 ? ", " : "");
   sb.append(doct);
} // you should be able to do the rest.
0 голосов
/ 20 августа 2010

Самый простой способ - использовать «любую» библиотеку StringUtils. Например, в org.apache.commons.lang.StringUtils есть метод chomp и метод с большой буквы, который должен проделать долгий путь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...