检查String是否大于60%大写

时间:2014-06-23 13:00:41

标签: java string percentage uppercase

我的问题很简单:如何检查String是否超过60%大写?

7 个答案:

答案 0 :(得分:4)

遍历字符串并计算每个大写字符。然后将此值除以字符串长度。

答案 1 :(得分:1)

尝试:

int uppers = 0;
for(char c : s.toCharArray()) {
    if(Character.isUpperCase(c)) {
        ++uppers;
    }
}
double pct = (uppers * 1D) / (s.length() * 1D) * 100D;
if(pct > 60D) {
   // do somnething
}

答案 2 :(得分:0)

这样的事情应该这样做。完全没有测试过。

public boolean getPercentUpperCase(String str, int morethenpercent) {    
    int lowercaseChars = 0, uppercaseChars = 0;

    for (int i = 0; i >= str.length() -1; i++) {
        if (Character.isUpperCase(str.charAt(i))) {
            uppercaseChars++;
        } else {
            lowercaseChars++;
        }
    }

    return (Math.round(uppercaseChars / lowercaseChars) > morethenpercent);
}

答案 3 :(得分:0)

试试这个

String test="AvCFrB";
char[] arr = test.toCharArray();
int count = 0;
for (int i = 0; i < arr.length; i++) {
    boolean upperCase = Character.isUpperCase(arr[i]);
    System.out.println(arr[i]+"="+upperCase);

    if(upperCase)
        count++;

}

double percentage = (count*1.0/test.length()*1.0)*100;
System.out.println(percentage);

输出 -

A=true
v=false
C=true
F=true
r=false
B=true
66.66666666666666

答案 4 :(得分:0)

它完全基于编程和数学。你自己编程会更好。但是,您可以按照以下流程进行操作。

  1. 获取字符串大小
  2. 检查字符串
  3. 的所有字符
  4. 计算每个大写
  5. 应用公式(100 * total_uppercharecters)/ string _size

答案 5 :(得分:0)

我在这里给出了我的解决方案,看起来像其他一些但我认为有一些改进。 您可以在此处尝试我的解决方案:https://ideone.com/KGmMDa

请注意,我使用while循环,因为我不喜欢break

int upCount = 0;
int index = 0;
double percentLimit = str.length() * 0.6;
boolean upper = false;
while (!upper && (index < str.length())) {
    if(Character.isUpperCase(str.charAt(index))) {
        upCount++;
        upper = upCount >= percentLimit;
    }
    index++;
}
return upper;

Grrr,这里有forbreak,但我讨厌break :(

int upCount = 0;
double percentLimit = str.length() * 0.6;
for (char c : str.toCharArray()) {
    if(Character.isUpperCase(c)) {
        upCount++;
        if (upCount >= percentLimit) {
            break;
        }
    }
}
return (upCount >= percentLimit);

答案 6 :(得分:0)

您还可以使用java 8中的流API来实现此目的。

public class Test { 
    public static void main(String[] args){
        System.out.println(is60PercentUpper("aBc GH")); //true
    }

    static boolean is60PercentUpper(String s){
         return s.chars()
                 .filter(Character::isLetter)
                 .map(Test::upperCaseMapper)
                 .summaryStatistics()
                 .getAverage() >= 0.60;
    }

    static int upperCaseMapper(int c){
        return Character.isUpperCase(c) ? 1 : 0;
    }
}

它的作用是:

  • 从字符串中获取字符流
  • 过滤每个字符只能获得字母
  • 如果其大写,则将每个char值映射为1,否则为0
  • 获取摘要统计信息并检查平均值是否优于或等于60%