Java本身会更改字符的大小

时间:2019-01-01 18:52:57

标签: java uppercase

我是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;
    }
}

为什么在RiverRRRRR上更改riverrrrr?我只想要Riverrrrr,为什么rrrrr是大写的?

enter image description here

2 个答案:

答案 0 :(得分:3)

公共字符串replace(char oldChar,char newChar)它将替换所有匹配的字符

  

返回一个新字符串,该字符串是用newChar替换此字符串中所有出现的oldChar的结果。

使用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

答案 1 :(得分:2)

由于您的if语句中有:

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

将第一个字符的每个实例替换为大写版本。

如果您只想大写第一个字母,则只取第一个字母的substring,在其上使用toUpperCase()并将其添加到其余字母的substring中字。或者,您可以使用replaceFirst只替换第一个字母