一、String下的方法
package practise;
import java.util.Arrays;
import java.util.Scanner;
public class StringMethod {
public static String leftTurn(String str){
return str;
}
public static void main(String[] args) {
/*Scanner s = new Scanner(System.in);
String str1 = s.nextLine();
// System.out.println(str1);*/
System.out.println("========.charAt(int)=========");
String str2 = "helloworld";
System.out.println("str2的长度:" + str2.length());
System.out.println(str2.charAt(0));//h 返回字符串该下标对应的字符
System.out.println("========.codePointAt(int)=========");
String str3 = "abcd";
System.out.println(str3.codePointAt(0));//97 返回该下标对应字符的编码
System.out.println("=========.codePointBefore(int)========");
System.out.println(str3.codePointBefore(1));//97 返回该下标的前一个字符的编码
System.out.println("=======.getChars(int,int,char[],int)==========");
String str4 = "asdfgh";
char[] arr = new char[6];
char[] arr2 = new char[6];
str4.getChars(0,5,arr,0);//将字符串复制到一个字符数组
//str4.getChars(arr2,2); 报错
System.out.println(str4);
System.out.println(arr);
System.out.println("========.equals(String)=========");//将两个字符串进行比较
String str5 = "qweert";
String str6 = "qweert";
String str7 = "qwerrt";
System.out.println(str5.equals(str6));//true
System.out.println(str5.equals(str7));//false
System.out.println("===========.equalsIgnoreCase(String)===================");//不区分大小写的比较两个字符串
String str11 = "Qweert";
System.out.println(str11.equalsIgnoreCase(str5));//true
System.out.println("========.subString(int,int)=========");
String str8 = "substring";
String str9 = str8.substring(1,4);//将str8的1~4(不包括4)复制到str9 容易计算子串的长度
System.out.println(str9);
System.out.println("========修改=========");
String str10 = str8.substring(0,3) + "sub";//先提取需要的字符,在拼接上新添加的字符
System.out.println(str10);
System.out.println("========+拼接=========");
String s = "hello";
String s2 = "world";
String s3 = s + s2;//按顺序拼接
System.out.println(s3);
int a = 123;
String s4 = s + a;//不是String类型,在拼接时也会转换成字符串型
System.out.println(s4);
System.out.println("===========.toCharArray()==============");
String strr = "aaaaaaaaaa";//将字符串转换为字符数组
char[] ch = strr.toCharArray();
System.out.println(Arrays.toString(ch));
System.out.println("========.copyValueOf=============");//将数字元素复制成字符串
String strr2 = String.copyValueOf(ch);
System.out.println(strr2);
}
}
二、练习
1.字符串左旋 如abcdefg——》cdefab
//左旋 abcdefg——》cdefab
package demo;
import java.util.Arrays;
import java.util.Scanner;
public class Demo1024 {
public static char[] leftTurn(char[] array,int a){//左旋a个字符
char tmp = 0;
for(int i = 0;i < a / 2;i ++){//前a个元素逆序
tmp = array[i];
array[i] = array[a - 1 - i];
array[a - 1 - i] = tmp;
}
for(int j = a;j < (array.length + a) / 2;j ++){//剩下的元素逆序
tmp = array[j];
array[j] = array[array.length - 1 + a - j];
array[array.length - 1 + a - j] = tmp;
}
for(int k = 0;k < array.length / 2;k ++){//将整个数组逆序
tmp = array[k];
array[k] = array[array.length - 1 - k];
array[array.length - 1 - k] = tmp;
}
return array;
}
public static char[] toArray(String str){//字符串转化为字符数组
char[] arr = new char[str.length()];//新建一个长度为该字符串长度的字符型数组
str.getChars(0,str.length(),arr,0);//将字符串复制到数组内
//System.out.println(arr);
return arr;
}
public static void main(String[] args) {
System.out.println("请输入一个字符串:");
Scanner s = new Scanner(System.in);
String str = s.nextLine();
// char[] arr1 = toArray(str);
// System.out.println(arr1);
// System.out.println(Arrays.toString(arr1));
char[] arr = leftTurn(toArray(str),3);
// System.out.println(Arrays.toString(arr));
System.out.println(arr);
}
}
package demo;
import java.util.Scanner;
public class Demo1026 {
//将一个字符串的某部分逆序
public static String reverse(String str,int begin,int end){
char[] ch = str.toCharArray();//字符串转换成数组
char tmp = 0;//中间变量
while(begin < end){//开始和结束部分没有相遇,进入循环
//交换
tmp = ch[begin];
ch[begin] = ch[end];
ch[end] = tmp;
begin ++;//开始位置为下一个下标
end --;//结束位置为前一个下标
}
return String.copyValueOf(ch);//返回字符串
}
public static void leftRoadString(String str,int n){//左旋
if(str ==null || n < 0 || n > str.length()){
return;
}
int left = 0;
int leftend = n - 1;
int right = n;
int rightend = str.length() - 1;
str = reverse(str,left,leftend);
str = reverse(str,right,rightend);
str = reverse(str,left,rightend);
System.out.println(str);
}
public static void main(String[] args) {
System.out.println("输入一个字符串:");
Scanner s = new Scanner(System.in);
String str = s.nextLine();
System.out.println(str);
leftRoadString(str,2);
}
}
2.一句话中的单词逆置,"Here is Tulun" ===> "Tulun is Here"
package demo;
import java.util.Scanner;
public class ReversrSentence {
public static void reverse(char[] ch,int begin,int end){
char tmp = 0;
while(begin < end){
tmp = ch[begin];
ch[begin] = ch[end];
ch[end] = tmp;
begin ++;
end --;
}
}
public static String reverseSentence(String str){
if(str == null){
return null;
}
char[] ch = str.toCharArray();
reverse(ch,0,ch.length - 1);//整体逆置
int i = 0;//单词开始
int j = 0;//单词结束
while(i < ch.length){
if(ch[j] == ' ' || j == str.length()){//j是空格,i~j的部分逆置
reverse(ch,i,--j);
i = ++j;
}else if(ch[i] == ' '){//i是空格,i向后走作为下一个单词的开始
i ++;
j ++;
}else{//都不是空格,j向后走,寻找单词的结束
j ++;
}
}
return String.copyValueOf(ch);
}
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
String str = s.nextLine();
System.out.println(reverseSentence(str));
}
}