20200728JavaString类练习

public class StringPractice {
	//1.倒序输出字符串
	public String reverse(String str) {
		char[] a = str.toCharArray();//将字符串转换成字符数组
		//将数组倒序
		for (int i = 0; i < a.length / 2; i++) {
			char temp;
			temp = a[i];
			a[i] = a[a.length - i - 1];
			a[a.length - i - 1] = temp;
		}
		return new String(a);//字符数组作为String的构造器参数会调用将数组转换成字符串的构造器
	}
	
	//2.求字符串中某子串的所有出现位置
	public String indexAll(String strF, String strS) {
		String str = "";
		boolean flag = false;//用于判断是否存在子串
		int index = 0;
		while(true) {
			index = strF.indexOf(strS, index);//返回子串起始位置索引
			if (index == -1 && flag == false) {//第一次就未找到子串时
				str = "指定字符串中不存在需要查找的子串";
				break;
			} else if (index == -1 && flag == true){//第二次以后未找到子串时
				break;
			} else {//找到子串时
				str += index + " ";//向返回字符串中拼接本次查找的索引
				index += strS.length();//将下次查找的开始索引后移子串的长度
				flag = true;//存在子串
			}
		}
		return str;
	}
	
	//3.判断字符串是否为回文
	public boolean palindrome(String str) {
		char[] a = str.toCharArray();//将字符串转换成字符数组
		for (int i = 0; i < a.length / 2; i++) {//依次首位比较
			if (a[i] != a[a.length - i - 1]) {//存在对应位置字符不同时
				return false;
			} 
		}
		return true;
	}
	
	//4.将驼峰字符串转换为下划线字符串
	public String camel(String str) {
		String str1 = "";
		str1 = str.replaceAll("[A-Z]", "_$0");//在字符串中的大写字母前加下划线($0表示与正则表达式匹配的字符串本身)
		str1 = str1.toLowerCase();//将大写字母变为小写字母
		return str1;
	}
	
	//5.将字符串数组按字典顺序排序
	public String[] ordering(String[] a) {
		String[] arr = a;
		String temp;
		boolean flag;
		for (int i = 0; i < arr.length - 1; i++) {//最多需要进行arr中元素数-1次遍历
			flag = false;//重置开关变量
			for (int j = 1; j < arr.length - i; j++) {//从第二个元素开始每个元素和前一个元素进行比较
				if (arr[j].compareTo(arr[j-1]) < 0) {//当前元素小于前一个元素的字典顺序时交换两个元素的值
					temp = arr[j];
					arr[j] = arr[j-1];
					arr[j-1] = temp;
					flag = true;//发生交换时将开关变量置为true
				}
			}
			if (flag == false) {//如果本次遍历中未发生交换,说明已经完成排序,结束循环
				break;
			}
		}
		return arr;
	}
}
public class StringTest {
	public static void main(String[] args) {
		StringPractice test = new StringPractice();
		//1.倒序测试
		String str1 = "123456789";
		System.out.println(test.reverse(str1));
		
		//2.查找子串测试
		String strF = "11234115671189011";
		String strS = "11";
		System.out.println(test.indexAll(strF, strS));
		
		//3.回文测试
		String strP = "123454321";
		System.out.println(test.palindrome(strP));
		
		//4.驼峰转下划线测试
		String strC = "stringFirstSecond";
		System.out.println(test.camel(strC));
		
		//5.字典排序测试
		String[] strArr = {"String1", "String21", "String123", "String2"};
		String[] strArr1 = test.ordering(strArr);
		for (int i = 0; i < strArr.length; i++) {
			System.out.println(strArr1[i]);
		}
	}
}

你可能感兴趣的:(20200728JavaString类练习)