java笔记之string常用方法<二>

1、 获取方法

int length()  获取字符串的长度,

char charAt(int index) 获取特定位置的字符 (角标越界),

int indexOf(String str) 获取特定字符的位置(overload),查找子串第一次出现的索引值,若没找到则返回-1表示,

int lastIndexOf(int ch) 获取最后一个字符的位置,查找子串最后一次出现的索引值,若没找到则返回-1表示。

public class Demo02 {
        public static void main(String[] args) {
            String str="abc中国ab中国";
            System.out.println("字符的个数:"+str.length());
            System.out.println("根据索引值获取对应字符:"+str.charAt(1));
            System.out.println("查找子串第一次出现的索引值:"+str.indexOf("ab"));
            System.out.println("查找子串最后一次出现的索引值:"+str.lastIndexOf("中国"));
        }
}

运行结果:

字符的个数:9
根据索引值获取对应字符:b
查找子串第一次出现的索引值:0
查找子串最后一次出现的索引值:7

2、判断方法

boolean endsWith(String str) 是否以指定字符结束,

boolean isEmpty()是否长度为0,

boolean contains(CharSequences) 是否包含指定序列 应用:搜索,

boolean equals(Object anObject) 是否相等,

boolean equalsIgnoreCase(String anotherString) 忽略大小写是否相等。

public class Demo03 {
        public static void main(String[] args) {
            String str="Demo.java";
            System.out.println("是否以指定字符串开始:"+str.startsWith("De"));
            System.out.println("是否以指定字符串结束:"+str.endsWith("java"));
            System.out.println("判断字符串内容是否为空:"+str.isEmpty());
            System.out.println("判断字符串是否包含指定内容:"+str.contains("emo"));
            System.out.println("判断2个字符串内容是否一致:"+"DEmo.java".equals(str));
            System.out.println("判断2个字符串内容是否一致(忽略大小写比较):"+"DeMO.JaVa".equalsIgnoreCase(str));
            
        }
}

运行结果:

是否以指定字符串开始:true
是否以指定字符串结束:true
判断字符串内容是否为空:false
判断字符串是否包含指定内容:true
判断2个字符串内容是否一致:false
判断2个字符串内容是否一致(忽略大小写比较):true

 3、转换方法

String(char[] value) 将字符数组转换为字符串,

String(byte [] value)将字节数组转化为字符串,

char[] toCharArray()  将字符串转换为字符数组,

byte [] getBytes()将字符串转化为字节数组。

public class Demo03 {
        public static void main(String[] args) {
            String str="Demo.java";
            char [] buf=str.toCharArray();
            System.out.println("字符串转化为字符数组:"+Arrays.toString(buf));
            byte [] buf2=str.getBytes();
            System.out.println("字符串转为字节数组:"+Arrays.toString(buf2));
        }
}

输出结果:

字符串转化为字符数组:[D, e, m, o, ., j, a, v, a]
字符串转为字节数组:[68, 101, 109, 111, 46, 106, 97, 118, 97]

4、基本数据型态转换成 String 

String 类别中已经提供了将基本数据型态转换成 String 的 static 方法 也就是 String.valueOf() 这个参数重载的方法 

有下列几种 
String.valueOf(boolean b) : 将 boolean 变量 b 转换成字符串 
String.valueOf(char c) : 将 char 变量 c 转换成字符串 
String.valueOf(char[] data) : 将 char 数组 data 转换成字符串 
String.valueOf(char[] data, int offset, int count) : 将 char 数组 data 中 由 data[offset] 开始取 count 个元素 转换成字符串 
String.valueOf(double d) : 将 double 变量 d 转换成字符串 
String.valueOf(float f) : 将 float 变量 f 转换成字符串 
String.valueOf(int i) : 将 int 变量 i 转换成字符串 
String.valueOf(long l) : 将 long 变量 l 转换成字符串 
String.valueOf(Object obj) : 将 obj 对象转换成 字符串, 等于 obj.toString() 

比如:

int c1=41254435;
String str1=String.valueOf(c);
System.out.println(str1);

char c2[]={'a','c','v','b'};

String str2=String.valueOf(c2);

此时输出的str即为字符串:str1 :41254435。

             str2 :acvb

其他类型就不举例子了,大家可以试试。

5、其他方法

String replace(char oldChar, char newChar) 替换

String[] split(String regex) 切割

String substring(int beginIndex) 指定开始位置,截取到末尾处

String substring(int beginIndex, int endIndex)截取字串

String toUpperCase() 转大写

String toLowerCase() 转小写

String trim() 去除空格

String concat() 字符串拼接

 

public class String02 {

    public static void main(String[] args) {
        String string01="大-家-一-起-玩-游-戏";
        String [] str01= string01.split("-");//依据-对字符串进行切割,返回字符串数组
        System.out.println("切割返回的字符串数组为:"+Arrays.toString(str01));
        String string02="   [HeLlo]   ";
        String str02=string02.substring(5,6);//包头不包尾,
        System.out.println("从指定索引处截取:"+str02);
        System.out.println("转化为大写:"+string02.toUpperCase());
        System.out.println("转化为大写:"+string02.toLowerCase());
        System.out.println("去除前后空格: "+string02.trim());
        System.out.println("替换后的内容是:"+string02.replace("o","o world"));
        //将0替换为0 hello ,此处是char类型的。为何传入字符串依据没报错  

      String s1="lucy ";

      String s2="allen";

      s1=s1.concat(s2);//等价于 s1=s1+s2,都可以将2个字符串拼接到一块,这一点2这功能相同。 但是 + 还可以将 字符串与非字符串(比如数字),拼接在一起,成为字符串

      System.out.println(s1);

    }
}

输出结果:

 

切割返回的字符串数组为:[大, 家, 一, 起, 玩, 游, 戏]
从指定索引处截取:e
转化为大写: [HELLO]
转化为大写: [hello]
去除前后空格: [HeLlo]
替换后的内容是: [HeLlo world]

lucy allen

Q:String replace(char oldChar, char newChar) 此处是char类型的。为何传入字符串依据没报错

A:string.replace(CharSequence target, CharSequence replacement);因为多态的关系,CharSequence接口有string的实现类。所以传入string类型的依旧没报错。


6、String方法的练习
6.1.自定义string类的trim方法。去除字符串两边空格的函数。
public class String03 {
    public static void main(String[] args) {
        String aString="   fsdaf     ";
        System.out.println("自定义输出的结果为:  "+Mytrim(aString));
    }
    public static String Mytrim(String str) {
        char []c=str.toCharArray();
        int startindex =0;//定义开始索引值
        int endindex =c.length-1;//定义结束的索引值
        while(true){    
            if (c[startindex]==' ') {
                    startindex++;                    
                } else {
                    break;
            }
        }
        //一直遍历,直到c[startindex]的值不为空,跳出循环
        while(true){
            
            if (c[endindex]==' ') {
                    endindex--;                    
                } else {
                    break;
            }
        }
        return str.substring(startindex, endindex);    //使用string的substring方法返回 
    }
}

输出结果:

自定义输出的结果为:fsda

6.2.获取上传文件名  "D:\\20120512\\day12\\Demo1.java"

public class String04 {
    public static void main(String[] args) {
            String string="D:\\20120512\\day12\\Demo1.java";
            string=fielName01(string);
            System.out.println("方法一输出的路径:"+string);
            fielName02(string);            
    }
    public static String fielName01(String string){//方法一根据最后一次出现的次数进行截取
        int last=string.lastIndexOf("\\");
        return  string.substring(last+1);
    }
    public static void fielName02(String string){//方法一利用string的切割方法
        String [] str=string.split("\\\\");    
        int last =str.length-1;
        System.out.println("方法二输出的路径:"+str[last]);    
    }
    
}

输出结果:

方法一输出的路径:Demo1.java
方法二输出的路径:Demo1.java

6.3 求一个子串出现的次数

public class String04 {
    public static void main(String[] args) {
            String string="D:\\20120512\\day12\\Demo1.java";
            int count =getCount(string, "12");
            System.out.println(count);
}

public static int getCount( String src , String tag ){ 
          // 0. 定义索引变量和统计个数的变量
          int index = 0;
          int count = 0;       
          // 1. 写循环判断
          while ( ( index = src.indexOf(tag) ) != -1 ) {  // jackjava  
               src = src.substring( index + tag.length() );   // index 
                     count++;
               }
               return count;
    }
}

输出结果:3

 

 

 

posted @ 2017-06-02 22:57  风居住5的街道  阅读(216)  评论(0编辑  收藏  举报