Android - редактирование моей строки, чтобы каждое слово начиналось с заглавной буквы - PullRequest
0 голосов
/ 17 января 2012

Мне было интересно, может ли кто-нибудь дать мне какой-нибудь код или указать мне на учебник, объясняющий, как я могу преобразовать свою строку, чтобы каждое слово начиналось с заглавной буквы.

Я также хотел бы преобразовать другойстрока, выделенная курсивом.

По сути, мое приложение получает данные из нескольких окон EditText, а затем по нажатию кнопки перемещается на следующую страницу с помощью намерения и объединяется в 1 абзац.Поэтому я предполагаю, что мне нужно отредактировать мою строку на начальной странице и убедиться, что она передана в том же формате.

Заранее спасибо

Ответы [ 6 ]

1 голос
/ 20 марта 2013

Вот простая функция

public static String capEachWord(String source){
        String result = "";
        String[] splitString = source.split(" ");
        for(String target : splitString){
            result
                    += Character.toUpperCase(target.charAt(0))
                    + target.substring(1) + " ";
        }
        return result.trim();
    }
1 голос
/ 17 января 2012

Вы можете использовать Apache StringUtils . Метод capitalize сделает всю работу.

Например:

WordUtils.capitalize("i am FINE") = "I Am FINE"

или

WordUtils.capitalizeFully("i am FINE") = "I Am Fine"
0 голосов
/ 16 декабря 2013
String source = "hello good old world";
StringBuilder res = new StringBuilder();

String[] strArr = source.split(" ");
for (String str : strArr) {
    char[] stringArray = str.trim().toCharArray();
    stringArray[0] = Character.toUpperCase(stringArray[0]);
    str = new String(stringArray);

    res.append(str).append(" ");
}

System.out.print("Result: " + res.toString().trim());
0 голосов
/ 17 января 2012

Строки являются неизменяемыми в Java, и String.charAt возвращает значение, а не ссылку, которую вы можете установить (как в C ++).Pheonixblade9 не будет компилироваться.Это делает то, что предлагает Pheonixblade9, за исключением того, что он компилируется.

public String capitalize(String testString) {
    String[] brokenString = testString.split(" ");
    String newString = "";

    for (String s : brokenString) {
        char[] chars = s.toCharArray();
        chars[0] = Character.toUpperCase(chars[0]);
        newString = newString + new String(chars) + " ";
    }

    //the trim removes trailing whitespace
    return newString.trim();
}
0 голосов
/ 17 января 2012

Просто добавьте
android:inputType="textCapWords" к вашему EditText в макете XML.
Это заставит все слова начинаться с буквы Caps.

0 голосов
/ 17 января 2012

Самый простой способ сделать это - использовать простые встроенные функции Java.

Попробуйте что-то вроде следующего (имена методов могут быть не совсем правильными, если вы делаете это из головы):

String label = Capitalize("this is my test string");    


public String Capitalize(String testString)
{
    String[] brokenString = testString.split(" ");
    String newString = "";

    for(String s : brokenString)
    {
        s.charAt(0) = s.charAt(0).toUpper();
        newString += s + " ";
    }

    return newString;
}

Дайте это попробовать, дайте мне знать, если это работает для вас.

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