2017-09-26 29 views
0

我想更改使用下划线作为字每一个词,没有下划线,但以一个大写Java全部替换:如何在下划线后改变每个字母?

例子:new_york - >纽约

到目前为止我的解决办法是写的每一封信一条线,这是不非常高效:

mySolution = mySolution.replaceAll("_a", "A"); 

编辑:这个问题是关于在一行中使用ReplaceAll,因此与其他问题无关。我可以管理编写一个“长”程序,但我想大多数用户会很乐意为这个问题得到实际的答案。

+0

见https://stackoverflow.com/questions/3618733。 –

+1

@WiktorStribiżew实际上是重复的,目标问题提供适用的本地和第三方解决方案。 – Mena

+1

你只需要在'replaceAll()'中使用正则表达式,比如'mySolution.replaceAll(“_([a-zA-Z] {1})”,“$ 1”);'。 –

回答

0
public class HelloWorld { 

    public static void main(String[] args) { 
     System.out.println(convert("Hello W_o_rld_")); 
    } 

    static String convert(String s) { 
     StringBuilder sc = new StringBuilder(); 
     for (int i = 0; i < s.length() - 1; i++) { //to avoid _ at last index 
      if (s.charAt(i) == '_') { 
       sc.append((Character.toUpperCase(s.charAt(i + 1)))); 
       i++; 

      } else { 
       sc.append(s.charAt(i)); 
      } 
     } 
     return sc.toString(); 
    } 
} 

迭代通过字符串的字符和修改下一个字符后_

+0

虽然此代码片段可能会解决问题,但[包括解释](http://meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers)确实有助于提高帖子的质量。请记住,您将来会为读者回答问题,而这些人可能不知道您的代码建议的原因。 –

+0

@JuanCarlosMendoza难道没有那个 – Optional

+0

原来的答案会跳过目标'String'的最后一个字符,并且不能连续使用下划线(除其他外)。 – Mena

相关问题