黑马程序员技术交流社区

标题: 字符串大小写转换 [打印本页]

作者: 王海亮    时间: 2012-7-16 14:45
标题: 字符串大小写转换
本帖最后由 王海亮 于 2012-7-18 13:53 编辑

String str="AaSd.1"转换成为str="aAsD.1"
谢谢刘涛等同学
我还是想用自己的方式去解决
我想3天终于想出啦我自己的方法 有两种给大家分享一下

  1. public class UpperLowerCaseDemo {
  2. public static void main(String[] args) {
  3. String str = "CaSd.1";
  4. String str1 = "";
  5. //方法1
  6. for (int i = 0; i < str.length(); i++) {
  7. char ch=str.charAt(i);
  8. if (ch>='A'&&ch<='Z'||ch>='a'&&ch<='z'){
  9. ch=(char)(ch^' '); //' '==32 例如A==65;A^' '==97;97==a
  10. }
  11. str1+=ch;
  12. }
  13. System.out.println(str1);
  14. //方法2
  15. String str2 = "";
  16. for (int i = 0; i < str.length(); i++) {
  17. char ch=str.charAt(i);
  18. ch=Character.toLowerCase(ch);//全部小写 转换 非字母无法转换不参与转换
  19. if(ch==str.charAt(i)){ //如果条件成立则本身就为小写
  20. ch=Character.toUpperCase(ch); //这转换为大写
  21. }
  22. str2+=ch;
  23. }
  24. System.out.println(str2);
  25. }

  26. }
复制代码

作者: 游兴钟    时间: 2012-7-16 15:13
要实现这个功能写个方法呗 先把字符串转换成数组 然后对每个字符进行判断 如果是大写字母就改成小写再存回去 大写字母改小写再催你回去 如果不是字母就不做改变
作者: 王海亮    时间: 2012-7-16 15:18
achilles 发表于 2012-7-16 15:13
要实现这个功能写个方法呗 先把字符串转换成数组 然后对每个字符进行判断 如果是大写字母就改成小写再存回 ...

比我想象麻烦
作者: 黑马刘涛    时间: 2012-7-16 15:40
本帖最后由 黑马刘涛 于 2012-7-16 15:42 编辑

  1. class UpperLowerCaseDemo
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 String str = "AaSd.1";
  6.                 System.out.println(str);
  7.                 String str1 = upperLowerCase(str);
  8.                 System.out.println(str1);
  9.         }
  10.         public static String upperLowerCase(String str)
  11.         {
  12.                 char[] charArray = str.toCharArray();
  13.                 for(int index = 0;index < str.length();index++)
  14.                 {        
  15.                         char ch = charArray[index];
  16.                         if(Character.isUpperCase(ch))//使用Character类判断大小写
  17.                                 charArray[index] = Character.toLowerCase(ch);//转为小写字母
  18.                         else if(Character.isLowerCase(ch))
  19.                                 charArray[index] = Character.toUpperCase(ch);
  20.                         else
  21.                                 continue;
  22.                 }
  23.                 return str = String.copyValueOf(charArray);
  24.         }
  25. }
复制代码
看看API说明,就能写的出来.
作者: 黑马刘涛    时间: 2012-7-16 15:43
建议楼主一定要自己写,自己查阅API,要不然以后写个程序写一句查一次说明,那是不行的,API还是要熟练。
作者: 王宝康    时间: 2012-7-16 15:51
  1. package string;

  2. public class ChangUpAndLow {

  3.         /**
  4.          * @param args
  5.          * 思路:
  6.          * 字符串的大小写转换依据大写字母和小写字母的ASCII码之间相差32,即同一个字母的大写比小写的ASCII码小32,
  7.          * 可以先把字符串转换成数组后,然后循环遍历数组进行判断,并进行相应的转换,
  8.          * 转换完毕后通过循环把数组再转换成字符串,
  9.          * 我这个例子没有封装,只是写一下思路。
  10.          */
  11.         public static void main(String[] args) {
  12.                 // TODO Auto-generated method stub
  13.                 String str = "AaSd.1";
  14.                 String str1 = "";
  15.                 char [] arr = str.toCharArray();
  16.                 for (int i = 0; i < arr.length; i++) { //循环遍历数组进行判断
  17.                         if (arr[i]>'A'&&arr[i]<'Z') {
  18.                                 arr[i] = (char) (arr[i]+32);
  19.                         }
  20.                         if (arr[i]>'a'&&arr[i]<'z') {
  21.                                 arr[i] = (char) (arr[i]-32);
  22.                         }
  23.                 }
  24.                 for (int i = 0; i < arr.length; i++) {        //转换完毕后通过循环把数组再转换成字符串                       
  25.                                 str1 += arr[i];
  26.                         }
  27.                 sop(str1);
  28.         }
  29.        
  30.         public static void sop(Object obj){
  31.                 System.out.println(obj);
  32.         }

  33. }
复制代码

作者: 马林康    时间: 2012-7-16 15:54
  1. public class StringConvert {
  2.         public static void main(String[] args){
  3.                 String str="AaSd.1";
  4.                 convert(str);//aAsD.1
  5.         }
  6.         public static void convert(String str){
  7.                 char[] chs = str.toCharArray();
  8.                 for(int i=0;i<chs.length;i++){
  9.                         if(chs[i]>='a'&&chs[i]<='z')
  10.                                 chs[i]=(char) (chs[i]-32);
  11.                         else if(chs[i]>='A'&&chs[i]<='Z')
  12.                                 chs[i]=(char) (chs[i]+32);
  13.                        
  14.                 }
  15.                 str =new String(chs);
  16.                 System.out.println(str);
  17.         }
  18. }
复制代码

作者: 李东升    时间: 2012-7-16 16:06
public static void main(String[] args) {
                String str="AaSd.1";
                char[] s=new char[str.length()];
                for(int i=0;i<str.length();i++){
                        if(str.charAt(i)>='a'&&str.charAt(i)<='z'){
                                s[i]=(char)(str.charAt(i)-32);
                        }
                        else if(str.charAt(i)>='A'&&str.charAt(i)<='Z'){
                                s[i]=(char)(str.charAt(i)+32);
                        }
                        else{
                                s[i]=str.charAt(i);
                        }
                }
                String st = String.copyValueOf(s);
                System.out.println(st);
               
               
        }

大写字母和小写字母的阿斯科码相差32,利用这个来实现大小写转换。
作者: 侯茂绵    时间: 2012-7-16 16:21
class cs{
public static void main(String[]args)
{
    String test= "AaSd.1";
    char [] chars = test.toCharArray();
    for(int j=0;j<chars.length;j++)
{
      if(chars[j]>='A'&&chars[j]<='Z')
        chars[j] = (char)(chars[j]+32);
        else if (chars[j]>='a'&&chars[j]<='z')
         chars[j] = (char)(chars[j]-32);
  }
  System.out.println(chars);
}
}

作者: 黑马-王言龙    时间: 2012-7-16 16:33
import java.io.*;
class Demo
{
   public static void main(String[] args) {
           String str="AaSd.1";
           char[] ch = str.toCharArray();        //1、字符串转成数组
           for(int x=0; x<ch.length; x++) {                //2、遍历并将大小写互换
                  if(Character.isUpperCase(ch[x]))
                          ch[x] = Character.toLowerCase(ch[x]);
                  else
                          ch[x] = Character.toUpperCase(ch[x]);
           }
           str = String.valueOf(ch);        //3、数组转换为字符串
           System.out.println(str);
   }
}
作者: 王海亮    时间: 2012-7-18 12:24
黑马刘涛 发表于 2012-7-16 15:40
看看API说明,就能写的出来.

代码结果又点问题结果应该为str="aAsD.1" 但是你的结果为AaSD.1
作者: 王海亮    时间: 2012-7-18 12:44
黑马刘涛 发表于 2012-7-16 15:40
看看API说明,就能写的出来.

谢谢 你的方法不错  我突然想到更简单的方法啦
作者: 王海亮    时间: 2012-7-18 13:33

  1. public class UpperLowerCaseDemo {
  2.     public static void main(String[] args) {  
  3.             String str = "CaSd.1";
  4.         String str1 = "";
  5.        //方法1
  6.         for (int i = 0; i < str.length(); i++) {
  7.                  char ch=str.charAt(i);
  8.              if (ch>='A'&&ch<='Z'||ch>='a'&&ch<='z'){
  9.                      ch=(char)(ch^' '); //' '==32 例如A==65;A^' '=97;97==a
  10.              }
  11.              str1+=ch;
  12.         }
  13.         System.out.println(str1);
  14.         //方法2
  15.         String str2 = "";
  16.         for (int i = 0; i < str.length(); i++) {
  17.                   char ch=str.charAt(i);
  18.            ch=Character.toLowerCase(ch);//全部小写 转换     非字母无法转换不参与转换
  19.            if(ch==str.charAt(i)){       //如果条件成立则本身就为小写
  20.                    ch=Character.toUpperCase(ch); //这转换为大写
  21.            }
  22.            str2+=ch;
  23.         }
  24.         System.out.println(str2);
  25.      }

  26. }
复制代码





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2