方式一、字符串之间的大小写转换toLowerCase与toUpperCase,char与String之间的转换。StringBuffer与String之间的转换。适合练习
运行结果:
import java.util.Scanner;
public class StringConvert2 {
/**
*
* @param str
* 将字符串中的大小写相互转换。
* 思路:将字符串str中每个char转换为string变量,然后通过String的toUpperCase()和toLowerCase()转换大小写,再存入StringBuffer中
* 关键:字符串的大小写转换方法。char字节或数组转换为String的方法valueOf().StringBuffer转换为String的方法toString
*/
public static void stringConvert2(String str){
StringBuffer stbuBuffer = new StringBuffer();
for(int i=0;i<str.length();i++){
if(str.charAt(i)>='a' && str.charAt(i)<='z'){
stbuBuffer.append(String.valueOf(str.charAt(i)).toUpperCase());
}else if(str.charAt(i)>='A' && str.charAt(i)<='Z'){
stbuBuffer.append(String.valueOf(str.charAt(i)).toLowerCase());
}
}
System.out.println(stbuBuffer.toString());
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner inScanner = new Scanner(System.in);
String string = inScanner.nextLine();
//System.out.println(string.toLowerCase());
stringConvert2(string);
}
}
结果:
asdASFDF
ASDasfdf
方式二(感觉最简单)
import java.util.Scanner;
public class StringConvert {
/**
*
* @param str
* 字符串中的大小写字符相互转化。
* 思路:把字符串转化为char数组。对每个char字符进行遍历
* 关键:char字节的大小写转换函数Character.toUpperCase(schar[i]) Character.toLowerCase(schar[i])
* 字节数组与string之间的相互转化
*/
public static void stringConvert(String str){
char[] schar = str.toCharArray();
for(int i=0;i<schar.length;i++){
if(schar[i]>='a' && schar[i] <='z'){
schar[i]=Character.toUpperCase(schar[i]);
}else if(schar[i]>='A'&& schar[i]<='Z'){
schar[i]=Character.toLowerCase(schar[i]);
}
}
//System.out.println(new String(schar));
System.out.println(String.valueOf(schar));
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scanner = new Scanner(System.in);
String str = scanner.nextLine();
stringConvert(str);
}
}
运行结果:
aasdfASDF
AASDFasdf
方式三、(使用unicode编码之间的差值来实现)
import java.util.Scanner;
public class UnicodeTest {
/**
*
* @param str
* 将字符串中的大小写相互转换
* 思路:将str转换成char数组,对数组里面的元素进行遍历并替换
* 关键:字符中的unicode编码。'A':65. 'a':97. 相差32(可以用两个字符相减来确定差值) 大写小 小写大
* int和char想换转换通过转型来实现。(int)'a'=97. (int)'A'=65. (char)97='a'.(char)65='A'
*/
public static void stringConvert3(String str){
char[] schar = str.toCharArray();
for(int i=0;i<schar.length;i++){
char temp = schar[i];
if(temp>='a' && temp<='z'){
schar[i] = (char)((int)temp-32);
}else if(temp>='A' && temp<='Z'){
schar[i] = (char)((int)temp+32);
}
}
System.out.println(String.valueOf(schar)); //char数组转换为string字符串
}
public static void main(String[] args) {
// TODO Auto-generated method stub
char a='a';
char b= 'A';
//理解char字符和unicode编码之间的关系
System.out.println(a-b); //32
System.out.println((int)a); //97
System.out.println((int)b); //65
System.out.println((char)97); //a
System.out.println((char)65); //A
Scanner inScanner = new Scanner(System.in);
String str = inScanner.nextLine();
stringConvert3(str);
inScanner.close();
}
}
运行结果:
32
97
65
a
A
asdfFDSA
ASDFfdsa