Java 小练习
要求:
从键盘输入一个包含数字和字母的字符串,统计的字符串的长度,字符串中字母的个数, 数字的个数,将字符串中小写字母转换成大写, 大写字母转换成小写。
- 重点:
正则表达式 append用法(
java里只有StringBuffer和StringBulid才有append方法,String里是没有append方法
)
package com.Demo1;
import java.util.Locale;
import java.util.Scanner;
public class Demo1 {
static Scanner input = new Scanner(System.in);
static String str = "";
public static void main(String[] args) {/**主函数*/
control();
}
public static void control() { /**控制函数*/
System.out.println("请输入字母和数字组成的字符串:");
String str = input.next(); /**字符串输入*/
if (Demo1.isRightString(str)) { /**通过函数isRightString(str)的返回值判断是否合法*/
System.out.println("输入字符串的长度是:" + getlength(str));
System.out.println("字母的长度是:" + getleurt(str));
System.out.println("字母为:" + str.substring(0, getleurt(str)));
System.out.println("数字的长度为:" + (str.length() - getleurt(str)));
System.out.println("数字为:" + str.substring(getleurt(str), str.length()));
System.out.println("字母大写为:" + str.substring(0, getleurt(str)).toUpperCase());/**前期字母数据已得到*/
System.out.println("字母小写为:" + str.substring(0, getleurt(str)).toLowerCase());/**得到之母数据进行大小写转换没有些转换函数*/
System.out.println("原字母为:"+str.substring(0, getleurt(str)));
System.out.println("大小写转换"+convent(str,getleurt(str)));
} else {
control();/**非法输入循环*/
}
}
public static boolean isRightString(String input) {
boolean reback;
if (input.matches("[a-zA-Z]*[0-9]+")) {/**正则表达式 其中*为有零个或多个相同 +为一个和一个以上相同*/
reback = true;
} else {
System.out.println("输入值不合法");
reback = false;
}
System.out.println(reback);
return reback;
}
public static int getlength(String input) {/**返回字符串长度*/
return input.length();
}
public static int getleurt(String input) {
int i;
Loop:
for (i = 0; i < input.length(); i++) {/**for循环遍历每个字符*/
String number = String.valueOf(input.charAt(i));/**将遍历得到的每个字符都赋值给number*/
if (number.matches("[0-9]+")) {/**将number中的字符用正则表达式进行判断
如果出现数字则为true
此处的 + 不可改变为*
*/
break Loop; /** loop为跳出指定循环,原本使用的是双层for循环,太过冗余*/
}
}
return i;/**返回字符串的位置下标*/
}
/**
* 将字符串和字母结束位子传入
* 通过for循环遍历每个字母
* 利用正则表达式判断大小写
* 转换大小写并用append添加到新的字符串中
* 最后返回字符串
* */
public static StringBuffer convent(String input, int i){/**创建大小写转换函数*/
String sr=input.substring(0, getleurt(input));//定义String类型sr并将字母写入
StringBuffer sr1= new StringBuffer();//创建StringBuffer和StringBulid就是new一个新对象
for(int j=0;j<=i-1;j++) {
String s = String.valueOf(sr.charAt(j));
if (s.matches("[a-z]+")) {
sr1.append(s.toUpperCase());//java里只有StringBuffer和StringBulid才有append方法,String里没有append方法
} else if(s.matches("[A-Z]+")) {
sr1.append(s.toLowerCase());
}
}
return sr1;
}
}