String常见功能

常见功能:

一、获取和判断

1、根据位置获取字符

char charAt(int index):

2、根据字符获取字符在字符串中位置:

int indexOf(int ch):返回第一次出现的位置

int indexOf(int ch,int fromIndex):从fromIndex开始,返回ch在字符串中出现的位置

int indexOf(String str):返回第一次出现的位置

int indexOf(String str,int fromIndex):从fromIndex开始,返回str在字符串中出现的位置,若未找到返回-1.

反向索引:

int lastIndexOf(int ch):返回第一次出现的位置(角标从左到右)

判断:

      1、 判断字符串中是否包含某一个子串:boolean contains(str)

       特殊:indexOf(str):可以索引str第一次出现位置,也可以用于对指定判断是否包含

                 if(str.indexOf("aa")!=-1)

 

       2、字符串中是否含有内容:boolean isEmpty(),

       3、字符串是否以指定内容开头/结尾:boolean startsWith(str) 和 endsWith()

      4、 字符串内容是否相同:equals

            字符串内容是否相同,忽略大小写:blloean equalsIgnoreCase()

二、转换

       1、将字符数组转成字符串:

                构造函数String(char[]):

                               String(char[],offest,count):一部分转换

                示例:char[] ch ={'a','b','c','d','e','f'};

                           String s = new String(ch); //abcdef

                           String s = new String(ch,1,3); //bcd

                静态方法:static String copyValueOf(char[])

                                  static String copyValueOf(char[] ch,int offest,int count )

       2、将字符串串转成字符数组:

                      char[] = arr.toCharArray();

       3、将字节数组转换成字符串:

                      String(byte[]):

                      String(byte[],offest,count):一部分转换

       4、将字符串转换成字节数组:

                     byte[] = arr.getBytes();

       5、将基本数据类型转换成字符串:static String valueOf(int/double)    //String.valueOf(3);

       6、将字符串转成大写或小写:String toUpperCase();

三、切割和替换

       切割:String[] split(regex):

                  示例:String s="karry,windy,jane";

                             String[] str = s.split(",");

       子串:String subString(begin):

                  String subString(begin,end):包含头不包含尾

                  e.g:String s="abcdef;

                        s.subString(2);      //cdef

                        s.subString(2,4);         //cd

       替换:replace(oldchar,newchar),  //替换空格

四、比较和去除空格

       将字符串两端空格去掉:String trim();

      对字符串进行自然顺序比较:  int compareTo(String);  //正数,0,负数,1的ASCII码值是49

练习:

1、模拟一个trim方法,去除字符串两端的空格

思路:1)判断第一个位置是否为空格,若是继续向下判断,直到不是空格为止(while循环,增量)。结尾处判断也是

           2)当开始和结尾都判断到不是空格时,即所求

程序代码:

import java.util.Scanner;

/*
设置2个指针,
 */
public class DelKong {
    public static void main(String[] args){
        System.out.println("请输入一个字符串:");
        Scanner sc = new Scanner(System.in);
        String str=sc.nextLine();
        System.out.println(delKong(str));

    }
    public static String delKong(String str){
        int start=0,end=str.length()-1;

        while(start<=end && str.charAt(start)==' '){
            start++;
        }
        while(start<=end && str.charAt(end)==' '){
            end--;
        }
        return str.substring(start,end+1);
    }

}

用例设计:"  abcde","abc  ","   aa  ","   ","ab c de"

2、将一个字符串进行反转,将指定部分进行反转。

import java.util.Scanner;


public class Test {
    public static void main(String[] args){
        System.out.println("请输入一个字符串:");
        Scanner sc = new Scanner(System.in);
        String str=sc.nextLine();
        System.out.println(reverseString(str));

    }
    
    public static String reverseString(String s){
        char[] ch=s.toCharArray();  //1.变成数组
        reverse(ch);               //2.数组反转
        return new String(ch);    //3.变成字符串
    }
    public static void reverse(char[] ch){
        int front=0,end=ch.length-1;
        while(front<end){
            swap(ch,front,end);
            front++;
            end--;
        }
    }
    public static void swap(char[] ch,int x,int y){
        char temp=ch[x];
        ch[x]=ch[y];
        ch[y]=temp;
    }

}

//部分反转


    public static String reverseString(String s,int start,int end){
        char[] ch=s.toCharArray();  //1.变成数组
        reverse(ch,start,end);     //2.数组反转
        return new String(ch);    //3.变成字符串
    }
    public static void reverse(char[] ch,int x,int y){
        int front=x,end=y-1;
        while(front<end){
            swap(ch,front,end);
            front++;
            end--;
        }
    }

3、获取一个字符串在另一个字符串中出现的次数

/*
1.定义计数器
2.获取子串第一次出现的位置
3.从第一次出现的位置后剩余的字符串中继续获取子串出现的位置,(index+子串长度)
  每获取一次计数一次
4。当获取不到时计数完成(while循环)

 */
public class SubStringCount {
    public static int getSubCount(String str,String sub){
        int count=0;
        int index=0;
        while((index=str.indexOf(sub))!=-1){
            str=str.substring(index+sub.length());//产生好多字符串
            count++;
        }
        return count;

    }
    //方法二:
    public static int getSubCount_2(String str,String sub){
        int count=0;
        int index=0;
        while((index=str.indexOf(sub,index))!=-1){
            index+=sub.length();
            count++;
        }
        return count;

    }
    public static void main(String[] args){
        String s="adbcabcdeabugtabb";
        System.out.println(getSubCount(s,"ab"));
    }

}

 

4、获取两个字符串中最大相同子串,第一个动作:将短串进行长度依次递减的子串打印。

          

/*
短串长度递减,看长串是否包含
0~length-0 比较1次
0~length-1 比较2次
0~length-2 比较3次
 */
public class MaxSubString {
    public static String getMaxSubString(String s1,String s2){
        String max="",min="";
        max=(s1.length()>s2.length())?s1:s2;
        min=(max==s1)?s2:s1;
        for(int i=0;i<min.length();i++){
            for(int j=0,k=min.length()-i;k!=min.length()+1;j++,k++){
                String temp=min.substring(j,k);
                if(max.contains(temp))//if(s1.indexOf(temp)!=-1)
                    return temp;
            }

        }
        return "";
    }
    public static void main(String[] args){
        String s1="abcwerthelloyuido";
        String s2="cvhellobnm";
        System.out.println(getMaxSubString(s1,s2));
    }

}

 

 

       

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值