黑马程序员技术交流社区
标题:
怎么将字符串中字母大小写互转呢??
[打印本页]
作者:
董玲飞
时间:
2014-2-25 16:54
标题:
怎么将字符串中字母大小写互转呢??
从键盘接收一个字符串,对字符串中的字母进行大小写互转(大写字母转成小写,小写字母转成大写)。应该怎么做,用什么方法呢???
String toUpperCase()和String toLowerCase()只能大写转小写或小写转大写,哪位朋友帮忙答下......
作者:
菠萝鱼
时间:
2014-2-25 17:08
Character类有两个静态方法可以判断
读取键盘录入的输入字节流,每次读一个就判断下。
Character.isLowerCase(char ch) 判断是否为小写
Character.isUpperCase(char ch) 判断是否为大写
作者:
xiaochen33520
时间:
2014-2-25 17:14
本帖最后由 xiaochen33520 于 2014-2-25 17:17 编辑
先通过toCharArray()转换成字符数组,然后进行判断大小写,如果是大写就加上32,如果是小写就-32,然后再把字符连接成字符串数组就OK,这里建议用StringBuilder
作者:
xietansheng
时间:
2014-2-25 17:17
class Demo
{
public static void main(String[] args) throws Exception
{
//为了方便获取输入字符串,使用包装流讲标准输入流包装成BufferedReader
BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));
String str = "";
//循环获取输入的每行字符串
while((str = bufr.readLine()) != null)
{
//将字符串编程Char类型数组
char[] charArray = str.toCharArray();
//遍历charArray数组,如果是字母则进行大小写互转
for(int i = 0; i < charArray.length; i++)
{
if(charArray[i] >= 'a' && charArray[i] <= 'z')
{
//如果是小写字母,则转换成大写
charArray[i] -= ('a' - 'A'); //减去大小写字母之间ASCII码值的差值
}
else if(charArray[i] >= 'A' && charArray[i] <= 'Z')
{
//如果是大写字母,则转换成小写
charArray[i] += ('a' - 'A'); //加上大小写字母之间ASCII码值的差值
}
//其他字符不变
}
//输出结果
System.out.println(new String(charArray));
}
}
}
复制代码
作者:
薛旻
时间:
2014-2-25 19:31
import java.io.*;
class CharChangeDemo {
public static void main(String[] args) throws IOException {
//读入一行键盘输入
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = br.readLine();
//将字符串转换为字符数组
char[] charArray = str.toCharArray();
//定义一个字符串缓冲区添加每一个转换的字符
StringBuilder sb = new StringBuilder();
String strTemp=null;
//建立Character类,为了使用其中的方法:isLowerCase isUpperCase toString
Character ch = new Character('a');
for (int i=0,String strTemp=null; i<charArray.length; i++) {
//如果该字符是小写,则转换为字符串使用其转化大写方法
if(ch.isLowerCase(charArray[i]))
strTemp = ch.toString(charArray[i]).toUpperCase();
//如果该字符是大写,则转换为字符串使用其转化小写方法
else if(ch.isUpperCase(charArray[i]))
strTemp = ch.toString(charArray[i]).toLowerCase();
//如果不是字符,则直接转化为字符串
else
strTemp = ch.toString(charArray[i]).toString();
//将转化的字符存入缓冲区
sb.append(strTemp);
}
br.close();
System.out.println(sb);
}
}
复制代码
作者:
大茶壶
时间:
2014-2-25 20:59
本帖最后由 大茶壶 于 2014-2-25 21:02 编辑
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Scanner;
public class Test5 {
public static void main(String[] args) throws Exception {
String data = new Scanner(System.in).nextLine();
System.out.println(convert(data));
}
/**
* 大小写转换
*/
public static String convert(String data) {
int dt = 'a' - 'A'; //大写和小写之间的差距,实际是32;
char[] chars = data.toCharArray();
for (int i = 0; i < chars.length; i++) {
if (chars[i] >= 'a' && chars[i] <= 'z') {
//是小写字母
chars[i] -= dt;
} else if (chars[i] >= 'A' && chars[i] <= 'Z') {
//是大写字母
chars[i] += dt;
}
//非字母的不管了
}
return new String(chars);
}
}
复制代码
作者:
zjf
时间:
2014-2-25 21:07
大写小写互相换,思路:
1、键盘接收字符,转数组
2、遍历,取出每一个,进行判断
3、判断的是字符的ASCII,大写的范围是65~90,小写的范围是97~122
所以大写的加上32,就转成小写
小写的减去32,就转成大写啦
4、加或者减后的结果,存储回数组
5、再转成字符就成心啦
private static String cast(String s){
//判断:若接收数据不在大小写的范围内,就抛异常
if ( s == null )
throw new RuntimeException("字符串没有指向");
//判断:若没有输入符号,就直接返回
if( "".equals(s))
return s;
//输入的数据有效后,再进入大小写转换
char[] ch = s.toCharArray();
for( int x = 0 ; x < ch.length ; x++){
if( ch[x] >=65 && ch[x]<=90){
ch[x] = (char) (ch[x] + 32);
}else if( ch[x] >= 97 && ch[x] <=122){
ch[x] = (char) (ch[x] - 32);
}
}
return new String(ch);
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2