package com.dodoke;
import java.util.Scanner;
public class StringClass {
/*
1.倒序输出字符串
2.给定一个字符串,判断给字符串中是否包含某个子串。如果包含,求出子串的所有出现位置。如:"abcd23abc34bcd"中,"bc"子串出现的位置
3.判断字符串是否是回文数
4.将驼峰字符串转化为下划线字符串
5.给定一个字符串数组,按照字典顺序,进行大小写排序
*/
public static void main(String[] args){
//1.倒序输出字符串
String str1 = "hello world";
System.out.println(str1);
char[] char1 = str1.toCharArray();//将字符串转为字符数组
for(int i=0;i<char1.length/2;i++){
char temp = char1[i];
char1[i] = char1[char1.length-1-i];
char1[char1.length-1-i] = temp;
}
str1 = String.valueOf(char1);//将字符数组转为字符串
System.out.println(str1);
//2.给定一个字符串,判断给字符串中是否包含某个子串。如果包含,求出子串的所有出现位置。如:"abcd23abc34bcd"中,"bc"子串出现的位置
String str2 = "abcd23abc34bcd";
String str3 = "bc";
int i = 0;
while(true){
//返回指定的子字符串第一次出现位置的索引,从指定的索引开始
int index1 = str2.indexOf(str3,i);
//找不到返回-1,循环结束
if(index1 == -1){
break;
}
//跳过第一次找到的索引+ 子串长度的位置,继续查找
i = str3.length() + index1;
System.out.println(index1 + " ");
}
//3.判断字符串是否是回文数
//回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数
String str4 = "12345654321";
char[] char2 = str4.toCharArray();//将字符串转为字符数组
for(int j=0;j<char2.length/2;j++){
char temp = char2[j];
char2[j] = char2[char2.length-1-j];
char2[char2.length-1-j] = temp;
}
String str5 = String.valueOf(char2);//将字符数组转为字符串
boolean bl = str5.equals(str4);
String str6;
if ( bl ==true ){
str6 = "是";
}else {
str6 = "不是";
}
System.out.println("字符串"+ '"'+ str4 + '"' + str6 + "回文数");
//4.将驼峰字符串转化为下划线字符串
//toLowerCase()转化成小写
String str7 = "stringClassName";
String str8 = str7.replaceAll("[A-Z]", "_$0").toLowerCase();
System.out.println(str8);
//5.给定一个字符串数组,按照字典顺序,进行大小写排序
//按字典顺序比较两个字符串compareTo()
String[] arr = {"df","er","af","ac","th","ef"};
for (String n : arr){
System.out.print(n + " ");
}
System.out.println();
//大的字符串往后挪
for (int k = 0;k< arr.length-1;k++){
for (int l = 0;l<arr.length-1-k;l++){
if (arr[l].compareTo(arr[l+1])>0){
String temp = arr[l];
arr[l] = arr[l + 1];
arr[l+1] = temp;
}
}
}
for (String m : arr){
System.out.print(m + " ");
}
}
}