Java 在空格后访问字符

Java 在空格后访问字符,java,Java,我想在空格后访问字符,并将其转换为大写。 我知道大写和删除空格,但无法访问空格后的字符 我想将:“要上载的文件”转换为“FileToBeUploaded”而不使用Regex 首先要做的是在“上拆分 String[] tokens = string.split(" "); 然后下一步是循环遍历每个令牌,并获取第一个字母 for(int x = 0; x < tokens.length; x++) { String token = tokens[x]; String firs

我想在空格后访问字符并将其转换为大写。 我知道大写和删除空格,但无法访问空格后的字符


我想将:
“要上载的文件”
转换为
“FileToBeUploaded”

而不使用Regex

首先要做的是在
上拆分

String[] tokens = string.split(" ");
然后下一步是循环遍历每个令牌,并获取第一个字母

for(int x = 0; x < tokens.length; x++)
{
    String token = tokens[x];
    String firstLetter = String.valueOf(tokens[x].charAt(0));
    // After you have first letter, it's just a case of moving to upper case..
    firstLetter = firstLetter.toUpperCase();
    tokens[x] = firstLetter + tokens[x].substring(1, tokens[x].length());
}

不带正则表达式

首先要做的是在
上拆分

String[] tokens = string.split(" ");
然后下一步是循环遍历每个令牌,并获取第一个字母

for(int x = 0; x < tokens.length; x++)
{
    String token = tokens[x];
    String firstLetter = String.valueOf(tokens[x].charAt(0));
    // After you have first letter, it's just a case of moving to upper case..
    firstLetter = firstLetter.toUpperCase();
    tokens[x] = firstLetter + tokens[x].substring(1, tokens[x].length());
}
试试这个

String str = "File to be uploaded";
    String[] arr = str.split(" ");
    StringBuilder sb = new StringBuilder();
    for (String i : arr) {
        sb.append(i.substring(0, 1).toUpperCase() + i.substring(1, i.length()));
    }
    System.out.println(sb.toString());
试试这个

String str = "File to be uploaded";
    String[] arr = str.split(" ");
    StringBuilder sb = new StringBuilder();
    for (String i : arr) {
        sb.append(i.substring(0, 1).toUpperCase() + i.substring(1, i.length()));
    }
    System.out.println(sb.toString());

//使用正则表达式非常简单

private String capitalEachWord(String s) {
    Pattern p = Pattern.compile("\\s+\\w"); // Search for one or more space
    Matcher m = p.matcher(s);
    StringBuffer buffer = new StringBuffer();
    while (m.find()) m.appendReplacement(buffer, m.group().toUpperCase());
    m.appendTail(buffer); // add to last
    return buffer.toString();
}

//使用正则表达式非常简单

private String capitalEachWord(String s) {
    Pattern p = Pattern.compile("\\s+\\w"); // Search for one or more space
    Matcher m = p.matcher(s);
    StringBuffer buffer = new StringBuffer();
    while (m.find()) m.appendReplacement(buffer, m.group().toUpperCase());
    m.appendTail(buffer); // add to last
    return buffer.toString();
}

这种形式的字符串称为

由于不能更改字符串中的字符(因为它是不可变的),因此必须通过迭代字符来构建新字符串。如果遇到空白,请跳过该字符,但记住将下一个字符大写

public static String toCamelCase (String s) {
    StringBuilder builder = new StringBuilder();
    boolean capitalizeNextChar = false;
    for (int i = 0; i < s.length(); i++) {
        char c = s.charAt(i);
        if (Character.isWhitespace(c)) {
            capitalizeNextChar = true;
        } else {
            if (capitalizeNextChar) {
                c = Character.toUpperCase(c);
                capitalizeNextChar = false;
            }
            builder.append(c);
        }
    }
    return builder.toString();
}
publicstaticstringtocamelcase(字符串s){
StringBuilder=新的StringBuilder();
布尔值大写nextchar=false;
对于(int i=0;i
这种形式的字符串称为

由于不能更改字符串中的字符(因为它是不可变的),因此必须通过迭代字符来构建新字符串。如果遇到空白,请跳过该字符,但记住将下一个字符大写

public static String toCamelCase (String s) {
    StringBuilder builder = new StringBuilder();
    boolean capitalizeNextChar = false;
    for (int i = 0; i < s.length(); i++) {
        char c = s.charAt(i);
        if (Character.isWhitespace(c)) {
            capitalizeNextChar = true;
        } else {
            if (capitalizeNextChar) {
                c = Character.toUpperCase(c);
                capitalizeNextChar = false;
            }
            builder.append(c);
        }
    }
    return builder.toString();
}
publicstaticstringtocamelcase(字符串s){
StringBuilder=新的StringBuilder();
布尔值大写nextchar=false;
对于(int i=0;i
您也可以使用
split()


您也可以使用
split()


尝试一些东西,让我们知道什么是有效的。用indexOf获取空间的索引。添加1。尝试一些方法,让我们知道哪些方法有效。使用indexOf获取空间的索引。添加1。无论如何,这不会给出ConcurrentModificationException。数组不会抛出ConcurrentModificationException。Plus集合仅在您在迭代时添加/删除项时抛出它们,而您在这里没有这样做。您不能使用foreach,因为foreach只读取,您所做的任何修改都不会写回数组。。我的想法是正确的,但原因是错误的:P我现在就编辑。字符串与+串联是邪恶的,最好使用StringBuilder。嗯。。同意。编辑。
String
类没有
getCharAt
方法,它只是
charAt
并且您不需要使用变量firstLetter(在每次循环迭代中声明),您可以使用
sb.append(Character.toUpperCase(token.charAt(0))+token.substring(1,token.length())在循环中,无论如何都不会给出ConcurrentModificationException。数组不会抛出ConcurrentModificationException。Plus集合仅在您在迭代时添加/删除项时抛出它们,而您在这里没有这样做。您不能使用foreach,因为foreach只读取,您所做的任何修改都不会写回数组。。我的想法是正确的,但原因是错误的:P我现在就编辑。字符串与+串联是邪恶的,最好使用StringBuilder。嗯。。同意。编辑。
String
类没有
getCharAt
方法,它只是
charAt
并且您不需要使用变量firstLetter(在每次循环迭代中声明),您可以使用
sb.append(Character.toUpperCase(token.charAt(0))+token.substring(1,token.length())在循环中