在⼀个字符串中,统计⼤写字母个数,⼩写字母个数,其他字符
个数的四种算法
题⽬描述:编写程序,输出字符串中的⼤写字母、⼩写⼩母和其他的个数。如有⼀个字符串"Helle, This is A test textfile.123456, tannk
you!!",则其⼤写字母个数:3,⼩写字母个数:29,其他字符个数:18.
这⾥提供了四种算法,第⼀种是我们⽐较好理解的,也属于硬编码问题,其他三种⽅法要借助JAVA语⾔的jdk提供的api。
⽅法⼀:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>js分析字符串内容</title>
<!--实现⼀个函数,输出某字符串⾥有⼏个⼤写字母,⼩写字母,数字,其他符号。字符串由形参指定 -->
<script>
var str = prompt("请随意输⼊⼤写字母⼩写字母数字及符号等");
function analyze(aa){
var a = 0;
var A = 0;
var n = 0;
var other = 0;
for (var i=0;i<aa.length;i++){
var c = aa.substr(i,1); //aa.charAt(i);
if (c>='a' && c<='z'){
a++;
}else if(c>='A' && c<='Z'){
A++;
}else if(c>='0' && c<='9'){
n++;
}else{
other++;
}
}
document.write("⼩写字母为"+a,"⼤写字母为"+A,"数字为"+n,"其他字符为"+other);
}
</script>
</head>
<body onload="analyze(str)">
</body>
</html>
[java]
1. //⽅法⼀:在利⽤每个字符的Unicode码在a~z之间,调⽤jdk提
2. //供的String类的charAt取出字符串每⼀个字符,逐个进⾏⽐较来判定
3.
4. class FindLetter {
5. public static void main(String[] args) {
6. String str = "Helle, This is A test textfile.123456, tannk you!!";
7. int upCount = 0;
8. int lowCount = 0;
9. int otherCount = 0;
10.
11. for(int i = 0; i < str.length(); i++) {
12. char c = str.charAt(i);
13. if(c >= 'a' && c <= 'z') {
14. lowCount++;
15. } else if(c >= 'A' && c <= 'Z') {
16. upCount++;
17. } else {
18. otherCount++;
19. }
⽅法⼆:
js在字符串中添加字符[java]
1. //⽅法⼆:⽤jdk的Character类的isUpperCase⽅法和isLowerCase⽅法
2.
3. class FindLetter1 {
4. public static void main(String[] args) {
5. String str = "Helle, This is A test textfile.123456, tannk you!!";
6. int upCount = 0;
7. int lowCount = 0;
8. int otherCount = 0;
9.
10. for(int i = 0; i < str.length(); i++) {
11. char c = str.charAt(i);
12. if(Character.isUpperCase(c)) {
13. upCount++;
14. } else if(Character.isLowerCase(c)) {
15. lowCount++;
16. } else {
17. otherCount++;
18. }
19. }
20. System.out.println("⼤写字母个数:" + upCount);
21. System.out.println("⼩写字母个数:" + lowCount);
22. System.out.println("其他字母个数:" + otherCount);
23. }
24. }
⽅法三:
[java]
1. //⽅法三:先定义两个字符串a到z和A到Z,再逐个取出str字符串中的每个字母,
2. //⽤indexOf()⽅法来判断字符是否在这这个定义的字符串中,在⼤写字母这⼀⾏,
3. //⼤写字母的计数器就加1,在⼩写字母这⾏,⼩写字母就加⼀,否则其他字母计算器
4. //加1
5.
6. class FindLetter2 {
7. public static void main(String[] args) {
8. String low = "abcdefghijklmnopqrstuvwxyz";
9. String up = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
10. int lowCount = 0;
11. int upCount = 0;
12. int otherCount = 0;
13. String str = "Helle, This is A test textfile.123456, tannk you!!";
14.
15. for(int i = 0; i < str.length(); i++) {
16. char c = str.charAt(i);
17. if(low.indexOf(c) != -1) {
18. lowCount++;
19. } else if(up.indexOf(c) != -1) {
20. upCount++;
21. } else {
22. otherCount++;
23. }
⽅法四:
[java]
1. //把str分别转化为⼤写和⼩写⼤写⽤sU ⼩写 sL
2. //然后通过与原串⽐较来统计个数
3.
4. class FindLetter3 {
5. public static void main(String[] args) {
6. String str = "Helle, This is A test textfile.123456, tannk you!!";
7. String sU = UpperCase();
8. String sL = LowerCase();
9. int lowCount = 0;
10. int upCount = 0;
11. int otherCount = 0;
12. for(int i = 0; i < str.length(); i++) {
13. char charSTR = str.charAt(i);
14. char charSU = sU.charAt(i);
15. char charSL = sL.charAt(i);
16.
17. //如果不是字母,是其他字符,则直接⽤otherCount来计数
18. if(Character.isLetter(charSTR)) {
19. //如果原串与转换过后的⼤写字母串相等,则原来字符为⼤写字母,
20. //若与⼩写字母相等,则为⼩写字母
21. if( charSTR == charSU) {
22. upCount++;
23. } else if(charSTR == charSL) {
24. lowCount++;
25. }
26. } else {
27. otherCount++;
28. }
29. }
30.
31. System.out.println("⼤写字母个数:" + upCount);
32. System.out.println("⼩写字母个数:" + lowCount);
33. System.out.println("其他字母个数:" + otherCount);
34. }
35. }
这四种算法都有正确的输出:
⼤写字母个数:3
⼩写字母个数:29
其他字母个数:18
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论