首頁  >  文章  >  Java  >  Java中String字串運算的介紹(程式碼範例)

Java中String字串運算的介紹(程式碼範例)

不言
不言轉載
2019-02-11 11:23:333113瀏覽

這篇文章帶給大家的內容是關於Java中String字串運算的介紹(程式碼範例),有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。

一、字串運算String類別

1、概述

String是特殊的參考資料類型,它是final類別。

2.建構方法

String str = "abc";

相當於:  char date[] = {'a','b ','c'};

String str = new String{data};

#3.主要方法

##char charAt(int index)傳回char指定索引處的值。

boolean contains(CharSequence s)當且僅當字串包含指定char值序列傳回true

boolean equals(Object anObject)  將次字串與指定物件進行比較

#int indexOf(int ch)  傳回指定字元第一次出現的索引值

int length()  傳回字串的長度,多用於迴圈的終止條件

boolean matches(String regex)  判斷一個字串是否符合給定的規則表達式

String replace(char oldChar,char newChar) 將字串中所有的oldChar替換為newChar

#String split(String regex)將字串依照規矩進行切分

String subString(int beginIndex) 傳回該字串的beginindex索引之後的字串

String toLowerCase()  將該字串中的所有大寫字母變成小寫字母

String toUpperCase()  將該字串中的所有小寫字母變成大寫字母

String trim()  刪除該字串所有前導和尾隨的空格並傳回

/*類型轉換*/

static String valueOf(boolean b) 
#傳回boolean參數的字串boolean形式。  
static String valueOf(char c) 
傳回 char參數的字串 char形式。  
static String valueOf(char[] data) 
傳回 char陣列參數的字串 char形式。  
static String valueOf(char[] data, int offset, int count) 
傳回 char陣列參數的特定子陣列的字串 char形式。  
static String valueOf(double d) 
傳回 double參數的字串 double形式。  
static String valueOf(float f) 
傳回 float參數的字串 float形式。  
static String valueOf(int i) 
傳回 int參數的字串 int形式。  
static String valueOf(long l) 
傳回 long參數的字串 long形式。  
static String valueOf(Object obj) 
傳回 Object參數的字串 Object形式。

注意:String字串「==」與equals方法的區別:

如果是透過String str = ""宣告的,==和equals都可用;

如果是透過new String ("")宣告的,不能用==,只能用equals。

4.示範案例

需求一:計算一個字串中大寫字母、小寫字母和數字的數量

#思路:將字串通過for循環進行便利,使用charAt方法獲取每一位字符,然後將每一位字符與AscII碼對應的值相對比判斷是大寫字母、小寫字母、數字,計數打印。

/**
 * @ author: PrincessHug
 * @ date: 2019/2/7, 17:09
 * @ Blog: https://www.cnblogs.com/HelloBigTable/
 */
public class StringAPIDemo {
    /**
     * 需求:计算字符串中大写字母、小写字母、数字出现的次数
     * @param args 参数
     */
    public static void main(String[] args) {
        //通过用户输入得到一个字符串
        String str = getString();
        getCount(str);
    }
    private static void getCount(String str) {
        int upperNum = 0;
        int lowerNum = 0;
        int digit = 0;
        for (int i = 0;i< str.length();i++){
            char c = str.charAt(i);
            /**
             * AscII码数字1-9(48-57),A-Z(65-91),a-z(97-123)
             */
            if (c>=48 && c<=57){
                digit++;
            }
            if (c>=65 && c<=91){
                upperNum++;
            }
            if (c>=97 && c<=123){
                lowerNum++;
            }
        }
        System.out.println("数字出现的次数为:" + digit);
        System.out.println("大写字母出现的次数为:" + upperNum);
        System.out.println("小写字母出现的次数为:" + lowerNum);
    }
    private static String getString() {
        System.out.println("请输入一个字符串:");
        Scanner scanner = new Scanner(System.in);
        String s = scanner.nextLine();
        return s;
    }
}

需求二:查詢父字串中某一個子字串出現的次數

想法1:使用indexOf方法查詢子字串第一次出現的索引a,再使用subString方法傳回父字串索引(a 子字串長度)之後的字串,併計數1,循環該操作知道indexOf方法傳回值為-1停止,取得計數值即可。

想法2:使用split方法將父字串依照子字串進行切分得到String數組,使用subString方法取得父字串最後的字串是否等於子字串,若等於,傳回String數組的length長度;若不等,則傳回String陣列的length-1.

**
 * @ author: PrincessHug
 * @ date: 2019/2/7, 17:34
 * @ Blog: https://www.cnblogs.com/HelloBigTable/
 */
public class FindChildStringCount {
    /**
     * 需求:查询父字符串中某一个子字符串的数量
     * @param args
     */
    public static void main(String[] args) {
        String parent = "itstar123qweritstar()%%dfitstarsdgji";
        String child = "itstar";

        int num1 = getChildStringCount01(parent, child);
        int num2 = getChildStringCount02(parent,child);
        int num3 = getChildStringCount03(parent,child);
        System.out.println("方法一:" + num1 + "次。");
        System.out.println("方法二:" + num2 + "次。");
        System.out.println("方法三:" + num3 + "次。");
    }

    private static int getChildStringCount02(String parent, String child) {
        String[] s = parent.split(child);
        if (child.equals(parent.substring(parent.length()-child.length()))){
            return s.length;
        }else {
            return s.length-1;
        }
    }

    private static int getChildStringCount01(String parent,String child) {
        int num = 0;
        int index = 0;
        while ((index = parent.indexOf(child)) != -1){
            num++;
            parent = parent.substring(index + child.length());
        }

        return num;
    }
    private static int getChildStringCount03(String parent,String child){
        String[] s = parent.split(child);
        int sum = 0;
        for (int i = 0;i < s.length;i++){
            sum += s[i].length();
        }
        return sum==parent.length()-(s.length-1)*child.length()?s.length-1:s.length;
    }
}

5.String的規則符合(正規表示式)

正規表示式常用於驗證身分證號、qq號、信箱等

字元類別及意義:

[abc]  =>  abc都可以

[a- zA-Z]  =>  a-z或A-Z都可以,兩頭都是閉區間

[0-9]  =>  數字0-9都可以

\d    數與        [0-9]相同

\D     =>   不能是數字

\w     =>   表示字母、數字、底線都可以,等於[a-zA-Z0-9_]

x?     =>   表示x出現一次或一次也沒有

x*   =>   表示x出現了零次或多次

X{n} >   表示x出現了n次

X{n,m}    =>   表示x出現了n到m次

X      =>  x 表示至少出現了一次

^】條件:

(1)位數為5-15位元

(2)开头数字不能为0

正则表达式为:regex = [1-9]\\d{4-14}

需求二:验证手机号码是否正确

手机号条件:

(1)位数为11位

(2)第一位为1

(3)第二位为3-9

正则表达式为:regex = [1]][3-9]\\d{9}  

需求三:验证邮箱是否正确

邮箱条件:

(1)@之前为邮箱名,字母、数字、下划线都可以

(2)@符号

(3)@之后为邮箱域名(qq.com/163.com.cn)

正则表达式为:regex = \\w+@[a-zA-Z0-9]+(\\.\\w{2,3})+

以下为需求一:验证qq号码是否正确,需求二、三只需将regex修改为对应的正则表达式即可。

/**
 * @ author: PrincessHug
 * @ date: 2019/2/7, 21:51
 * @ Blog: https://www.cnblogs.com/HelloBigTable/
 */
public class MatchQQ {
    public static void main(String[] args) {
        while (true) {
            String qq = getQQ();
            if (qq.equals("stop")){
                break;
            }else {
                matchQQ(qq);
            }
        }
    }

    /**
     * @return 返回获取的qq号
     */
    private static String getQQ() {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入您的qq号");
        String s = sc.nextLine();
        return s;
    }

    /**
     * 验证qq号是否匹配regex表达式
     * @param qq 获得用户输入的qq号
     */
    private static void matchQQ(String qq) {
        String regex = qqRegex();
        if (qq.matches(regex)) {
            System.out.println("QQ号正确!");
        } else {
            System.out.println("QQ号错误!");
        }
    }

    /**
     * @return 返回qq的正则表达式
     */
    private static String qqRegex() {
        String regex = "[1-9][0-9]{4,14}";
        return regex;
    }
}

以上是Java中String字串運算的介紹(程式碼範例)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:cnblogs.com。如有侵權,請聯絡admin@php.cn刪除