2012-04-23 132 views
0

我在这个论坛上搜索了一下,我似乎找到的所有问题都是关于如何使每个单词的第一个字母大写的问题。这不是我要找的。检查单词是否大写,只更改第一个字母

我正在寻找将检查字符串中所有单词的内容,如果它们是大写字母,则会将字母改为小写字母,除了第一个字母。

一样,让我们​​说字符串是:

“HI计算器”

这将改变为:

“嗨#1”

或者:

“我'在stackoverflow网站上提出问题“

I T公司将其更改为:

“我问一个问题StackOverflow上点com”

+3

我认为你正在寻找这一点。 http://stackoverflow.com/questions/1892765/capitalize-first-char-of-each-word-in-a-string-java – 2012-04-23 04:06:25

+0

''我是''不是一个字,它是一个双字收缩。你认为任何非空白字符都是“单词”吗? – dasblinkenlight 2012-04-23 04:06:47

回答

4

我会使用StringTokenizer类来向上突破串入单独的词。然后你就可以得到每个令牌作为一个单独的字符串和比较:

String line = "A BIG Thing that Something" 

StringTokenizer st = new StringTokenizer(line); 

     while(st.hasMoreTokens) 
      { 
       String a = st.nextToken(); 
       if(a.equals(a.toUpperCase())){ 
        System.out.println(a.charAt(0) + a.substring(1).toLowerCase()); 
       }else{ 
        System.out.println(a); 
        } 
      } 

类似的东西...你需要记住导入的StringTokenizer,这是java.util包的一部分。

+0

'if(a.equals(a.toUpperCase())'做了什么?只需将标记更改为大写?在这种情况下,为什么需要'if()'? – noMAD 2012-04-23 04:17:15

+0

该部分检查a是否相等如果是因为海报想让这些类型的标记只有一个首要的资本,否则,如果保持一切都是一样的,这是否有意义? – Sekm 2012-04-23 04:20:15

+0

谢谢你们,你知道我该怎么做,所以如果第一个字母是一个符号(即“:”),它不会小写第二个字符,所以人们可以做到:D并没有它去:d? – 2012-04-23 04:41:15

-1

如果您打算在您的项目中加入库,我很肯定Apache Commons-lang StringUtils具有您需要的功能类型。

0
public static void main(String[] args) { 
     String org= "HI STACKOVERFLOW"; 
     String [] temp=org.split(" "); 
     int len=temp.length; 
     String ne = "."; 
     for(int i=0;i<len;i++) 
     { 

     temp[i]=temp[i].toUpperCase(); 
     temp[i]=(temp[i].substring(0, 1)).toUpperCase()+(temp[i].substring(1, temp[i].length())).toLowerCase(); 
     System.out.print(temp[i]+" "); 
     } 

    } 

输出嗨#1

相关问题