黑马程序员技术交流社区

标题: 大小写转换问题 [打印本页]

作者: \(^o^)/    时间: 2014-4-17 23:19
标题: 大小写转换问题
本帖最后由 \(^o^)/ 于 2014-4-18 13:21 编辑
  1. class StringTest
  2. {
  3. public static void main(String[] args)
  4. {
  5.   method_tran();
  6. }
  7. public static void method_tran()
  8. {
  9.   String s="Hello Java";
  10.   sop(s.toLowerCase());
  11.   sop(s.toUpperCase());
  12. }
  13. public static void sop(Object obj)
  14. {
  15.   System.out.println(obj);
  16.   
  17. }

  18. }
复制代码
最后打印出来的是:第一行是hello java,第二行是HELLO JAVA,那么我想问下如何修改代码把结果变成hELLO jAVA.
作者: 谭荣强    时间: 2014-4-17 23:41
用Stirng中的repalce方法替换,或者放到StringBuilder中替换
作者: 清风有意    时间: 2014-4-17 23:44
我就会这个,不知道还有没有捷径。

  1. package exercise;

  2. public class StringTest1 {
  3.          public static void main(String[] args)
  4.          {
  5.           method_tran();
  6.          }
  7.          public static void method_tran()
  8.          {
  9.           String s="Hello Java";
  10.           StringBuilder sb=new StringBuilder();
  11.           for(int x=0;x<s.length();x++)
  12.           {
  13.                   if(s.charAt(x)>='a'&&s.charAt(x)<='z')
  14.                   {
  15.                          sb.append((char)(s.charAt(x)-32));
  16.                   }
  17.                   else if(s.charAt(x)>='A'&&s.charAt(x)<='Z')
  18.                   {
  19.                           sb.append((char)(s.charAt(x)+32));
  20.                   }
  21.                   else{
  22.                           sb.append(s.charAt(x));
  23.                   }
  24.           }
  25.           sop(s);
  26.           sop(sb.toString());
  27.          }
  28.          public static void sop(Object obj)
  29.          {
  30.           System.out.println(obj);
  31.           
  32.          }
  33.          
  34.         }
复制代码

作者: Dijkstra    时间: 2014-4-17 23:46
本帖最后由 Dijkstra 于 2014-4-17 23:49 编辑

class StringTest
{
         public static void main(String[] args){
                 method_tran();
         }
         
         public static void method_tran(){
                 String s="Hello Java";
                 
                 String s1 = s.substring(0, 1);
                 String s2 = s.substring(1, 5);
                 String s3 = s.substring(6, 7);
                 String s4 = s.substring(7);
                 
                 String s5 = s1.toLowerCase().concat(s2.toUpperCase()).concat(s3.toLowerCase()).concat(s4.toUpperCase());
                 
                 sop(s5);
                 
                // sop(s.toLowerCase());
                // sop(s.toUpperCase());
         }
         
         public static void sop(Object obj){
                 System.out.println(obj);  
         }
         
}

作者: ^o(孤8o|狼i¤F    时间: 2014-4-17 23:46
public class StringTest
{
        public static void main(String[] args)
        {
                method_tran();
        }
        public static void method_tran()
        {
                String s="Hello Java";
                sop(s.toLowerCase());
                sop(s.toUpperCase());
                method(s);
        }
        public static void sop(Object obj)
        {
                        System.out.println(obj);
  
        }
        public static void method(String str){
               
                String s1 = str.substring(0, 1); //截取H
                String s2 = str.substring(1,6);  //ello
                String s3 = str.substring(6,7); // 截取 j
               
                String s4 = str.substring(7,10); //截取ava
               
                  
                String s5 = s1.toLowerCase() + s2.toUpperCase()+s3.toLowerCase()+s4.toUpperCase();
                System.out.println(""+s5);
        }

}
作者: 曹冬明    时间: 2014-4-17 23:55
String s="Hello Java";
  sop(s.toLowerCase());
  sop(s.toUpperCase().replace("H","h"));

这里改成这样就可以了
作者: 随风而去    时间: 2014-4-18 00:00
//本来想用正则表达式做的,但感觉太过麻烦 就换成StringBulider
public static void method_tran()
        {
          String s="Hello Java";
          sop(s.toLowerCase());
          sop(s.toUpperCase());
          //此方法适合任何字符串
          StringBuilder sb ;  //做字符串转换
          StringBuilder sk = new StringBuilder(); //用来存储字符串
          for(String ss : s.toUpperCase().split(" ")){
                  sb = new StringBuilder(ss);
                  sb.setCharAt(0, ss.toLowerCase().charAt(0)); //将首字母转换成小写字母
                  sk.append(sb.toString()+" "); //添加到 sk
          }
          sk.trimToSize(); //去除两边的 空格
          sop(sk.toString());
        }
作者: ⒈心只霸占沵    时间: 2014-4-18 00:02
本帖最后由 ⒈心只霸占沵 于 2014-4-18 00:15 编辑
  1. <p>
  2. package Test</p><p>public class Test5 {
  3. public static void main(String[] args) {
  4.   System.out.println(toCase("hello java"));
  5.   
  6. }
  7. //这是我写的一种方法,还有其他方法,你思考思考吧,希望对你有帮助!
  8. public static String toCase(String str){
  9.   String[] strs=str.split(" ");
  10.   StringBuilder sb=new StringBuilder();
  11.   for(String s:strs){
  12.   if(s.length()!=0){
  13.     if(s.length()>=2)
  14.       sb.append(s.substring(0,1).toLowerCase()+s.substring(1).toUpperCase());
  15.     else
  16.    sb.append(s.substring(0,1).toLowerCase());
  17.   }
  18.   sb.append(" ");
  19.   }
  20.   return sb.toString();
  21. }
  22. }
  23. </p>
复制代码


作者: 2528870651    时间: 2014-4-18 08:29
刚刚做了一个类似的题目。给你看看,写的很烂,大家可以指导一下
  1. //给定一个字符串,把它变成首字母大写,其他字母小写的字符串。
  2. //从键盘出入一个字符串,全部26个字母组成。

  3. package String_01;

  4. import java.util.Scanner;

  5. public class StringTest3 {
  6.         public static void main(String[] args) {

  7.                 Scanner input = new Scanner(System.in);
  8.                 System.out.println("请输入一个字符串:");
  9.                 String str = input.next();
  10.                 String str1 = str.toLowerCase();

  11.                 char[] arr = str1.toCharArray();
  12.                 char ch = (char) (arr[0] - 32);
  13.                 arr[0] = ch;

  14.                 System.out.println(new String(arr));

  15.         }

  16. }
复制代码

作者: 2528870651    时间: 2014-4-18 08:35
谭荣强 发表于 2014-4-17 23:41
用Stirng中的repalce方法替换,或者放到StringBuilder中替换

如果用replace的话不好实现吧,replace(char ch1,char ch2)
他是用ch2替换字符串中所有的ch1,所以如果字符串后面有和第一个字符相同时,也会被替换。
如:” abeaf  “   replace(a,b)   ———>   "  bbebf  "
作者: 2528870651    时间: 2014-4-18 08:36
曹冬明 发表于 2014-4-17 23:55
String s="Hello Java";
  sop(s.toLowerCase());
  sop(s.toUpperCase().replace("H","h"));

如果 字符串不只有一个 “H”呢???
如:  HelloHh   ——》   hellohh
作者: 曹冬明    时间: 2014-4-18 08:40
2528870651 发表于 2014-4-18 08:36
如果 字符串不只有一个 “H”呢???
如:  HelloHh   ——》   hellohh

我真不懂,为什么有那么多人问这些根本没什么用的问题,不知一个H,就用正则
作者: 2528870651    时间: 2014-4-18 08:45
曹冬明 发表于 2014-4-18 08:40
我真不懂,为什么有那么多人问这些根本没什么用的问题,不知一个H,就用正则 ...

你妹妹 我学到了正则我还问毛线啊
作者: 2528870651    时间: 2014-4-18 08:46
曹冬明 发表于 2014-4-18 08:40
我真不懂,为什么有那么多人问这些根本没什么用的问题,不知一个H,就用正则 ...

只是告诉你你的回答有问题,回答的时候认真点
作者: 曹冬明    时间: 2014-4-18 09:11
2528870651 发表于 2014-4-18 08:46
只是告诉你你的回答有问题,回答的时候认真点

正则很简单的,一会就学会,专门匹配字符串的,你说咋办就咋办
作者: 2528870651    时间: 2014-4-18 09:46
曹冬明 发表于 2014-4-18 09:11
正则很简单的,一会就学会,专门匹配字符串的,你说咋办就咋办

嗯 谢谢
作者: 谭荣强    时间: 2014-4-18 13:51
2528870651 发表于 2014-4-18 08:35
如果用replace的话不好实现吧,replace(char ch1,char ch2)
他是用ch2替换字符串中所有的ch1,所以如 ...

就这个例子可以,但是你想别处也用到,就用StringBuilder的replaceCharAt方法。
作者: 2528870651    时间: 2014-4-18 13:52
谭荣强 发表于 2014-4-18 13:51
就这个例子可以,但是你想别处也用到,就用StringBuilder的replaceCharAt方法。

嗯,知道了。。
作者: sanguodouble1    时间: 2014-4-18 15:54
  1. public static void method_tran() {
  2.                 String s1 = "aSAs fSabcd  sdf";
  3.                 StringBuilder sb = new StringBuilder();
  4.                 Pattern p = Pattern.compile("(\\w+\\b)");
  5.                 Pattern p1 = Pattern.compile("(\\w)(\\w*)");
  6.                 Matcher m = p.matcher(s1);
  7.                 int i=0;
  8.                 while (m.find()) {
  9.                         String str = m.group().toUpperCase();
  10.                         int e = str.length();
  11.                         sb.append(str);
  12.                         String firstLetter = sb.substring(sb.length()-e, sb.length()-e+1);
  13.                         sb.replace(sb.length()-e, sb.length()-e, firstLetter.toLowerCase());
  14.                         sb.append(" ");
  15.                        
  16.                 }
  17.                 sb.delete(sb.length()-1, sb.length());
  18.                 sop(sb);
  19.         }
  20.         public static void sop(Object obj) {
  21.                 System.out.println(obj);

  22.         }
复制代码
这样写比较完美,任何单词都能识别了,
就是先把每个单词取出来,然后把单词大写,再把这个单词的首字母小写,最后存到StringBuilder中
然后打印StringBuilder





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