Java 如果大写字母是完全大写的话,如何在保留大写字母的同时将第一个字母大写,其余字母小写

Java 如果大写字母是完全大写的话,如何在保留大写字母的同时将第一个字母大写,其余字母小写,java,string,split,uppercase,text-parsing,Java,String,Split,Uppercase,Text Parsing,返回句子大小写中当前文本的字符串表示形式。判决案例是最重要的 在句子中使用大写字母或仅大写第一个字母的传统方式 单词和任何专有名词。此外,所有大写字母都应保持原样 对于本作业,名词仅限于开头有一个大写字母的单词。 **例如字符串“第一句。第二句。第三句” 其输出为(第一句、第二句、第三句)** 这是我上述作业的代码。我可以将每个点后的第一个字母大写,将其余的字母设置为小写,但我不知道如何保持大写字母的原样 下面是我的代码: getSentenceCaseText() 公共字符串getSent

返回句子大小写中当前文本的字符串表示形式。判决案例是最重要的 在句子中使用大写字母或仅大写第一个字母的传统方式 单词和任何专有名词。此外,所有大写字母都应保持原样

对于本作业,名词仅限于开头有一个大写字母的单词。

**例如字符串“第一句。第二句。第三句”

其输出为(第一句、第二句、第三句)**


这是我上述作业的代码。我可以将每个点后的第一个字母大写,将其余的字母设置为小写,但我不知道如何保持大写字母的原样

下面是我的代码:

getSentenceCaseText()
公共字符串getSentenceCaseText(字符串文本){
int pos=0;
布尔大写=真;
StringBuilder sb=新的StringBuilder(文本);
while(pos
您应该有一个布尔值-
isCapitalize

起初,这是真的

在迭代文本的过程中,您应该使用相同的单词创建新的操纵文本

如果
isCapitalize
标志为true,则以第一个大写字母的方式书写单词。否则,请用小写大写字母书写。如果整个单词都有大写字母(这就是我们重复单词的原因)-请用大写字母对整个单词

如果您有“”,则该标志仅对1个单词启用

现在,将上面的文本转化为代码。
如果您需要帮助,请告诉我们。

您应该有一个布尔值-
isCapitalize

起初,这是真的

在迭代文本的过程中,您应该使用相同的单词创建新的操纵文本

如果
isCapitalize
标志为true,则以第一个大写字母的方式书写单词。否则,请用小写大写字母书写。如果整个单词都有大写字母(这就是我们重复单词的原因)-请用大写字母对整个单词

如果您有“”,则该标志仅对1个单词启用

现在,将上面的文本转化为代码。
如果您需要帮助,请告诉我们。

您发布的大多数逻辑都可以正常工作。问题是像“句子”这样的词,因为你用来检查大写的逻辑是不正确的

最大的问题是,您试图迭代这些单词,同时检查该字符串是否大写

最简单的方法是分离关注点;事先检查单词是否大写,并采取相应措施

首先创建一个只检查单词是否大写的方法。例如:

public String getSentenceCaseText(String text) { 
    
    int pos = 0;
    boolean capitalize = true;
    StringBuilder sb = new StringBuilder(text);
    
    while (pos < sb.length()){
         sb.setCharAt(pos, Character.toLowerCase(sb.charAt(pos)));
         if (sb.charAt(pos) == '.') {
            capitalize = true;      
        } else if (capitalize && !Character.isWhitespace(sb.charAt(pos))) {
            sb.setCharAt(pos, Character.toUpperCase(sb.charAt(pos)));   
            capitalize = false;
        }
        pos++;
       }   
   return sb.toString();
}
    
如果为大写,则该方法应跳过此单词并移动到下一个单词。否则,它会将第一个字符大写,并降低剩余的字符。对文本中的所有单词应用相同的逻辑

代码可能如下所示:

 boolean capitalize = isUpper(text, pos);
公共静态字符串getSentenceCaseText(字符串文本){
int pos=0;
StringBuilder sb=新的StringBuilder(文本);
//迭代字符串
while(pos

使用此策略和此代码作为指导,在此基础上构建并实现您自己的方法。

您发布的大多数逻辑都可以正常工作。问题是像“句子”这样的词,因为你用来检查大写的逻辑是不正确的

最大的问题是,您试图迭代这些单词,同时检查该字符串是否大写

最简单的方法是分离关注点;事先检查单词是否大写,并采取相应措施

首先创建一个只检查单词是否大写的方法。例如:

public String getSentenceCaseText(String text) { 
    
    int pos = 0;
    boolean capitalize = true;
    StringBuilder sb = new StringBuilder(text);
    
    while (pos < sb.length()){
         sb.setCharAt(pos, Character.toLowerCase(sb.charAt(pos)));
         if (sb.charAt(pos) == '.') {
            capitalize = true;      
        } else if (capitalize && !Character.isWhitespace(sb.charAt(pos))) {
            sb.setCharAt(pos, Character.toUpperCase(sb.charAt(pos)));   
            capitalize = false;
        }
        pos++;
       }   
   return sb.toString();
}
    
如果为大写,则该方法应跳过此单词并移动到下一个单词。否则,它会将第一个字符大写,并降低剩余的字符。对文本中的所有单词应用相同的逻辑

代码可能如下所示:

 boolean capitalize = isUpper(text, pos);
公共静态字符串getSentenceCaseText(字符串文本){
int pos=0;
StringBuilder sb=新的StringBuilder(文本);
//迭代字符串
while(posO! HI!First  sentence. Second  sentence. Third: SENTENCE. Am I OK?! Yes, I am fine!!