Сама Java меняет размер персонажа - PullRequest
0 голосов
/ 01 января 2019

Я новичок в Java. При выполнении задач я столкнулся с проблемой. Сам код изменяется в слове riverrrrr r small на R large

import java.lang.StringBuilder;
import java.util.Arrays;

class Solution {
    static String toCamelCase(String s) {
        if (s.contains("_")) {
            s = s.replace("_", "-");
        }
        String[] list = s.split("-");
        String nowa = "";
        String result = "";
        String result1 = "";
        System.out.println(Arrays.toString(list));
        for (int i = 0; i < list.length; i++) {
            if (Character.isUpperCase(list[0].charAt(0))) {
                nowa = list[i].replace(list[i].charAt(0), list[i].toUpperCase().charAt(0));
                result += nowa;
                System.out.println(nowa);
                result1 = result;
            }
            if (Character.isLowerCase(list[0].charAt(0))) {
                nowa = list[i].replace(list[i].charAt(0), list[i].toUpperCase().charAt(0));
                result += nowa;
                result1 = result.replace(result.charAt(0), result.toLowerCase().charAt(0));
            }
        }
        return result1;
    }
}

Зачем менять riverrrrr на RiverRRRRR?Я хочу только Riverrrrr, почему rrrrr в верхнем регистре?

введите описание изображения здесь

Ответы [ 2 ]

0 голосов
/ 01 января 2019

public String replace (char oldChar, char newChar) Он заменит все совпадения char

Возвращает новую строку, полученную в результате замены всех вхождений oldChar в этой строкеwith newChar.

Use replaceFirst()

public String replaceFirst(String regex, String replacement)

Заменяет первую подстроку этой строки, которая соответствует заданному регулярному выражению с заданной заменой.

В вашем коде измените это на

nowa = list[i].replace(list[i].charAt(0), list[i].toUpperCase().charAt(0));

Это

nowa = list[i].replaceFirst(String.valueOf(list[i].charAt(0)), String.valueOf(list[i].toUpperCase().charAt(0)));

Ввод: "lake_riverrrr"

Выход: lakeRiverrrr

0 голосов
/ 01 января 2019

Потому что в ваших операторах if есть:

nowa = list[i].replace(list[i].charAt(0), list[i].toUpperCase().charAt(0));

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

Если вы хотите использовать только первую букву с заглавной буквы, просто возьмите substring первой буквы, используйте toUpperCase() и добавьте ее к substring остальной части слова.В качестве альтернативы вы можете использовать replaceFirst только для замены первой буквы

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