字符串小练习

 

1. 字符串字母大小写转换

问题描述:设计一个方法, 将一个字符串中的内容大小写转换, 并返回转换后的字符串

代码实现:

import java.util.Scanner;

public class CaseWriteTest {

	@SuppressWarnings("resource")
	public static void main(String[] args) {
		// TODO Auto-generated method stub

		Scanner sc=new Scanner(System.in);
		System.out.print("请输入一个字符串:");
		String str=sc.next();
		StringBuffer newstr=CaseWrite(str);
		System.out.print(newstr);
	}

	//  大小写转换           参数:字符串                       返回值:字符串
	public static StringBuffer CaseWrite(String str){
		String upStr=str.toUpperCase();
		String lowStr=str.toLowerCase();
		StringBuffer sb=new StringBuffer(str.length());
		for(int i=0;i<str.length();i++){   //判断大小写
			if(str.charAt(i)==upStr.charAt(i)){ 
				sb.append(lowStr.charAt(i));  //转小写
			}
			else {
				sb.append(upStr.charAt(i));  //转大写
			}
		}
		return sb;
	}
}

2. 统计子字符串的次数

问题描述:获取一个字符串  "kk" 在另一个  "abkkcdkkefkkskk" 字符串中出现的次数。
    思路:
    1)定义个计数器。
    2)获取kk第一次出现的位置。
    3)从第一次出现位置后剩余的字符串中继续获取kk出现的位置。每获取一次就计数一次。
    4)当获取不到时,计数完成

代码实现:

public class CatchSub {

	public static void main(String[] args) {
		// TODO Auto-generated method stub

		String str="abkkcdkkefkkskk";
		System.out.println(str);
		System.out.print("字符串kk在字符串中出现的次数:"+Huoqu(str));
	}

	public static int Huoqu(String str){
		String s="kk";
		int count=0;  //用于计数
		int index=0;   //表市子字的下标
		while((index=str.indexOf(s))!=-1){  //循环判断是否找到子串
			count++;
			str=str.substring(index+s.length()); //截取子串第一次出现之后的大子串
		}
		return count;
	}
}

3. 字符串常见题目

问题描述:  已知字符串:"this is a test of java" 执行以下操作:
             1)统计出字符串中s出现的次数
             2)取出字符串中"test"
             3)将字符串转换成一个字符数组
             4)将字符串中每个单词的第一个字母变成大写,输出到控制台
             5)将字符串是此案倒叙输出 "java of test a is this

代码实现:函数调用

import java.util.Arrays;

public class StringTest {

	public static void main(String[] args) {
		// TODO Auto-generated method stub

		String str="this is a test of java";
		int count=Statistic(str);
		System.out.println("子串出现的次数:"+count);
		System.out.println("取出子串:"+subString(str));
		char[] ch=str.toCharArray();
		System.out.print("字符串转换字符数组:"+Arrays.toString(ch));
		System.out.println();
		StringBuffer sb=upperFrist(str);
		System.out.println("每个单词首字母大写的字符串:"+sb);
		System.out.println("倒序输出为:"+Flashback(str));
	}

	// 统计子串次数      参数: 字符串        返回值:次数
	public static int Statistic(String str){     // 相比于上一题较优化
		int count=0;
		 for(int i = 0;i<str.length();i++) {
   		  if(str.charAt(i) == 's') {
   			  count++;
   		  }
   	  }
		return count;
	}
	//取子串          参数:字符串           返回值:子串
	public static String subString(String str){
		int begin=str.indexOf("test");  //需要先确定test在什么位置出现 即开始的位置
		String s=str.substring(begin,(begin+"test".length()));
		return s;
	}
	//首字母大写         参数:字符串                       返回值:字符串
	public static StringBuffer upperFrist(String str){
		//拆分  String类的split 方法
		String[] split=str.split(" ");  //将字符串按空格进行拆分,得到每一个单词 依旧还是字符串
      //当前数组中存储的是每一个单词 仍是字符串,要操作字符串中的每一个首字母,需将其转换为字符串
  	   char[] crr;
  	   StringBuffer sb=new StringBuffer();
  	   for(String s:split){  //取出每一个单词
  		   crr=s.toCharArray();
  		   crr[0]=(char)(crr[0]-32);
  		   for(int i=0;i<crr.length;i++){
  			   sb.append(crr[i]);
  		   }
  		   sb.append(" "); 
  	   }
		return sb; 
	}
	//倒叙输出
	public static String Flashback(String str){
		String[] split=str.split(" ");  //拆分
		for(int i=0;i<split.length/2;i++){
			String temp=split[i];
			split[i]=split[split.length-i-1];
			split[split.length-i-1]=temp;
		}
		//String类的join静态方法作用是根据第一个参数的连接符,对数组中的字符串进行连接
		String newStr=String.join(" ",split);
		return newStr;
	}
}

       说明:代码中用到的for (String s: split){}  循环解释,其中的 s 是遍历后赋值的变量,split 是待遍历的对象。

       for的循环语句for(String s : args)这个格式是foreach的形式,表示取出数组args[]中的每一个元素,就是循环一次就依次取出一个元素赋值给s,直到取完为止,java中的foreach也是用for来表示,具体语法分两种:

第一种数组  for(type var : arr) {//循环体}   示例(这里以List为例):这里的 arr 必须是字符串数组

List<String> list = new ArrayList<String>();
for(String item : list){
    System.out.println("循环元素:" + item);
}

第二种非数组类,可迭代对象  for(type var : coll) {//循环体}   示例: 

Map<String, String> map = new HashMap<String, String>();
for(Entry<String, String> item : map.entrySet()){
    System.out.println("循环元素 key:" + item.getKey() + " value:" + item.getValue());
}

代码打印结果:

     

4. 子串反转

       问题描述:将一个字符串进行反转。将字符串中指定部分进行反转,"abcdefg";abfedcg
       思路:1)曾经学习过对数组的元素进行反转。
                  2)将字符串变成数组,对数组反转。
                  3)将反转后的数组变成字符串。
                  4)只要将或反转的部分的开始和结束位置作为参数传递即可。 

代码实现:

import java.util.Scanner;

public class FanZhuan {

	public static void main(String[] args) {
		// TODO Auto-generated method stub

		Scanner sc=new Scanner(System.in);
		System.out.print("请输入字符串:");
		String str=sc.next();
		System.out.print("请输入开始位置:");
		int begin=sc.nextInt();
		System.out.print("请输入结束位置:");
		int end=sc.nextInt();
		String newStr=Reversal(str,begin,end);
		System.out.println("反转后的字符串:"+newStr);
	}
             //字符数组反转
	public static String Reversal(String str,int begin,int end){ 
		String subStr=str.substring(begin,end+1);
		/*
		// 使用String 转字符数组实现
		char[] crr=subStr.toCharArray();
		for(int i=0;i<crr.length/2;i++){
			char temp=crr[i];
			crr[i]=crr[crr.length-1-i];
			crr[crr.length-1-i]=temp;
		}
		String newStr=new String(crr);  //字符数组转字符串
		String replace=str.replace(subStr,newStr);
		return replace;
		*/
		//使用StringBuffer 构造器实现      简易优化
		StringBuffer sb=new StringBuffer(subStr);
		sb.reverse();
		String newStr=sb.toString();
		String replace=str.replace(subStr,newStr);
		return replace;
		
	}
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值