ホームページ  >  記事  >  Java  >  Java の文字列操作の概要 (コード例)

Java の文字列操作の概要 (コード例)

不言
不言転載
2019-02-11 11:23:333112ブラウズ

この記事では、Java の文字列操作の概要 (コード例) を紹介します。必要な方は参考にしていただければ幸いです。

1. 文字列操作 String クラス

1. 概要

String は特別な参照データ型であり、最終的なものです。クラス。

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 を返します。

booleanquals(Object anObject) 部分文字列と指定されたオブジェクトを比較します

int indexOf(int ch) 指定された文字が最初に出現するインデックス値を返します

int length() 文字列の長さを返します。主にループの終了条件に使用されます

booleanmatches(String regex) 文字列が指定された正規表現に一致するかどうかを判断します

String replace(char oldChar,char newChar) 文字列内のすべての oldChar を newChar に置き換えます

String Split(String regex) ) ルールに従って文字列を分割します

String subString(int beginIndex) 文字列の beginindex インデックスの後の文字列を返します

String toLowerCase() 文字列内のすべての大文字を返します 小文字に変更しますLetters

String toUpperCase() 文字列内のすべての小文字を大文字に変更します

String Trim() 文字列から先頭と末尾のスペースをすべて削除し、return

/*型変換*/

static String valueOf(boolean b)
ブール パラメータの文字列ブール形式を返します。
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 パラメータの文字列オブジェクト形式を返します。

注: String 文字列 "==" と equals メソッドの違い:

String str = "" を通じて宣言されている場合は、== と equals の両方を使用できます。

##新しい文字列 ("") を通じて宣言されている場合、== は使用できません。使用できるのは等しいだけです。

4. デモ ケース


要件 1: 文字列内の大文字、小文字、数字の数を数える

アイデア: 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;
    }
}

要件 2: 特定の部分文字列が親文字列に出現する回数をクエリする

アイデア 1: IndexOf メソッドを使用して、部分文字列が最初に出現するインデックス a をクエリします。このメソッドは、親文字列インデックス (部分文字列の長さ) の後の文字列を返し、1 をカウントします。この操作を、indexOf メソッドの戻り値が -1 になるまでループし、停止してカウント値を取得するだけです。

アイデア 2: 親文字列を部分文字列に分割するには、split メソッドを使用します。文字列配列を取得するには、subString メソッドを使用して、親文字列の最後の文字列が部分文字列と等しいかどうかを取得します。文字列配列の長さ。等しくない場合は、文字列配列の長さ 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.文字列ルールの一致 (正規表現)

# 正規表現は、ID 番号、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 が 1 回出現するか、1 回出現しないかを示します。 => x が 0 または 1 回出現することを示します。回数が増える

X{n} = > x が n 回出現することを示します

X{n,m} => x が n 回から m 回出現することを示します

X #^; => 正規表現の始まりを示します

& => 正規表現の終わりを示します

要件 1: qq 番号が正しいかどうかを確認します

qq 番号 条件:

(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 の文字列操作の概要 (コード例)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はcnblogs.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。