Java 检查单词是否为大写,并仅更改第一个字母

Java 检查单词是否为大写,并仅更改第一个字母,java,string,uppercase,Java,String,Uppercase,我在这个论坛上搜索了一下,我能找到的似乎都是关于如何使每个单词的第一个字母大写的问题。这不是我要找的 我正在寻找能够检查字符串中所有单词的东西,如果它们是大写的,则会将字母改为小写,但第一个字母除外 比如,假设字符串是: “HI STACKOVERFLOW” 它将改为: “Hi Stackoverflow” 或: “我在问一个关于stackoverflow.com的问题” 它将改为: “我在stackoverflow.com上问一个问题”我会使用StringTokenizer类将字符串分解成单独

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

我正在寻找能够检查字符串中所有单词的东西,如果它们是大写的,则会将字母改为小写,但第一个字母除外

比如,假设字符串是:

“HI STACKOVERFLOW”

它将改为:

“Hi Stackoverflow”

或:

“我在问一个关于stackoverflow.com的问题”

它将改为:


“我在stackoverflow.com上问一个问题”

我会使用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包的一部分。

我将使用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包的一部分。

如果您愿意在项目中合并库,我很确定Apache Commons lang
StringUtils
具有您需要的功能类型。

如果您愿意在项目中合并库,我很确定Apache Commons lang
StringUtils
具有您需要的功能类型。

public static void main(String[]args){
   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]+" "); 
      }

    }
String org=“HI STACKOVERFLOW”; 字符串[]temp=org.split(“”); int len=温度长度; 字符串ne=“.”; 对于(int i=0;i
publicstaticvoidmain(String[]args){
String org=“HI STACKOVERFLOW”;
字符串[]temp=org.split(“”);
int len=温度长度;
字符串ne=“.”;

对于(int i=0;ii)你想找这个。<“代码”>“代码”不是一个单词,而是一个两个单词的缩写。你认为任何非空白字符都是“单词”吗?我想你在找这个问题。<代码>“我”不是一个单词,而是两个单词的缩写。你认为非空白字符是否是“单词”?什么是<代码>(a.equals(a.toUpperCase())
do?只需将标记更改为大写?在这种情况下,为什么需要
if()
?该部分检查a是否大写(即a是否大写)。如果是因为海报想让这些类型的代币只有一个主要的资本,那么如果是其他类型的代币,那么其他类型的代币都保持不变。这有意义吗?谢谢,伙计们,你们知道我是如何做到的吗?如果第一个字母是一个符号(即“:”)它不会将第二个字符小写。因此,人们可以执行:D,而不必将其转到:D?@codythonpson:您必须使用
a.charAt(0)
。检查ASCII表以查看要比较的内容。我不会给您答案,因为
通过搜索学习>>>询问
;-)如果(a.equals)
是什么(a.toUpperCase())
do?只需将标记更改为大写?在这种情况下,为什么需要
if()
?该部分检查a是否等于大写(即a是否为大写)。如果是因为海报想让这些类型的代币只有一个主要的资本,那么如果是其他类型的代币,那么其他类型的代币都保持不变。这有意义吗?谢谢,伙计们,你们知道我是如何做到的吗?如果第一个字母是一个符号(即“:”)它不会将第二个字符小写。因此,人们可以执行:D,而不必将其转到:D?@codythonpson:您必须使用
a.charAt(0)
。检查ASCII表以查看要比较的内容。我不会给您答案,因为
通过搜索学习>>询问
;-)