A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© \(^o^)/ 中级黑马   /  2014-4-17 23:19  /  1486 人查看  /  18 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 \(^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.

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

18 个回复

倒序浏览
用Stirng中的repalce方法替换,或者放到StringBuilder中替换
回复 使用道具 举报
我就会这个,不知道还有没有捷径。

  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.         }
复制代码

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 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);  
         }
         
}

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
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);
        }

}

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
String s="Hello Java";
  sop(s.toLowerCase());
  sop(s.toUpperCase().replace("H","h"));

这里改成这样就可以了

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
//本来想用正则表达式做的,但感觉太过麻烦 就换成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());
        }

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 ⒈心只霸占沵 于 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>
复制代码

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
刚刚做了一个类似的题目。给你看看,写的很烂,大家可以指导一下
  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. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
谭荣强 发表于 2014-4-17 23:41
用Stirng中的repalce方法替换,或者放到StringBuilder中替换

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

如果 字符串不只有一个 “H”呢???
如:  HelloHh   ——》   hellohh
回复 使用道具 举报
2528870651 发表于 2014-4-18 08:36
如果 字符串不只有一个 “H”呢???
如:  HelloHh   ——》   hellohh

我真不懂,为什么有那么多人问这些根本没什么用的问题,不知一个H,就用正则
回复 使用道具 举报
曹冬明 发表于 2014-4-18 08:40
我真不懂,为什么有那么多人问这些根本没什么用的问题,不知一个H,就用正则 ...

你妹妹 我学到了正则我还问毛线啊
回复 使用道具 举报
曹冬明 发表于 2014-4-18 08:40
我真不懂,为什么有那么多人问这些根本没什么用的问题,不知一个H,就用正则 ...

只是告诉你你的回答有问题,回答的时候认真点
回复 使用道具 举报
2528870651 发表于 2014-4-18 08:46
只是告诉你你的回答有问题,回答的时候认真点

正则很简单的,一会就学会,专门匹配字符串的,你说咋办就咋办
回复 使用道具 举报
曹冬明 发表于 2014-4-18 09:11
正则很简单的,一会就学会,专门匹配字符串的,你说咋办就咋办

嗯 谢谢
回复 使用道具 举报
2528870651 发表于 2014-4-18 08:35
如果用replace的话不好实现吧,replace(char ch1,char ch2)
他是用ch2替换字符串中所有的ch1,所以如 ...

就这个例子可以,但是你想别处也用到,就用StringBuilder的replaceCharAt方法。
回复 使用道具 举报
谭荣强 发表于 2014-4-18 13:51
就这个例子可以,但是你想别处也用到,就用StringBuilder的replaceCharAt方法。

嗯,知道了。。
回复 使用道具 举报
  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

评分

参与人数 1黑马币 +1 收起 理由
枫儿 + 1 赞一个!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马