Java 文字列と正規表現

目次

施工方法

知らせ

フォーマット制御文字列

一般的な方法

StringBuilder と StringBuffer

特徴

可変と不変を理解する

文字列連結方式

文字列削除メソッド

文字列に文字を挿入する

文字列置換メソッド

文字列反転メソッド

文字列に対応するインデックスの文字を検索します 

インターセプト文字列

正規表現

正規表現記号テーブル

正規表現の一般的な方法

一致()

replaceAll()

スプリット()

意味:文字列は char[] 配列をカプセル化するオブジェクトであり、文字列は不変です

String str = "abc";以下と同等: char[] data = {'a', 'b', 'c'};

public final class String
    implements java.io.Serializable, Comparable<String>, CharSequence 

知らせ:

  • String クラスは最終的に変更されるため、String クラスを継承することはできません
  • パッケージはjava.langであり、使用時にパッケージをインポートする必要はありません
  • 文字列は一度作成すると長さを変更できません

施工方法

String(char[] value, int m, int n):添え字 m から始まる値配列をインターセプトし、n 文字をインターセプトして文字列を形成します

String(char[] value):文字配列を文字列に変換します

String(bytes[] bytes):プラットフォームのデフォルト文字セットを使用して、指定されたバイト配列をデコードして文字列を形成します

String(bytes[] bytes,String charsetname):指定された文字セットを使用して、指定されたバイト配列をデコードして文字列を形成します

String(bytes[] bytes, int m, int n, String charsetname):指定された文字セットを使用して指定されたバイト配列をデコードし、添字 m からバイトをインターセプトし、n をインターセプトして文字列を形成します

方法 2:文字列 str="abc";

知らせ

  1. メソッド 2 の作成メソッドで文字列を初めて使用する場合、Java は文字列ヒープ内の定数プールにオブジェクトを作成します。定数プールにオブジェクトが存在しない場合、他のメソッドはオブジェクトを直接作成するのと同等です。定数プールにも作成されます
  2. 同じ内容を再度使用する場合は、ヒープ上の定数プールに存在するオブジェクトに直接アクセスします。

フォーマット制御文字列

    String a="我";
    String b="蛋糕";
    String name=String.format("%s喜欢%s", a,b);
    System.out.println(name);//字符串可以直接打印

一般的な方法

int hashCode()
返回此字符串的哈希码。

boolean equals(Object anObject)
将此字符串与指定的对象比较,比较的是重写后的串的具体内容

String toString()
返回此对象本身(它已经是一个字符串!)。 

int length()
返回此字符串的长度。

String toUpperCase()
所有字符都转换为大写。

String toLowerCase()
所有字符都转换为小写

boolean startsWith(String prefix)
测试此字符串是否以指定的元素开头。

boolean endsWith(String suffix)
测试此字符串是否以指定的字符串结束。

char charAt(int index)
返回指定索引/下标处的 char 值/字符

int indexOf(String str)
返回指定字符在此字符串中第一次出现处的索引。

int lastIndexOf(String str)
返回指定字符在此字符串中最后一次出现处的索引。

String concat(String str)
将指定字符串连接/拼接到此字符串的结尾,注意:不会改变原串

String[] split(String regex)
根据给定元素来分隔此字符串。

String trim()
返回去除首尾空格的字符串

String replace(CharSequence target, CharSequence replacement)
用新字符串replacement替换掉原有的旧的字符串target

byte[] getBytes()
把字符串存储到一个新的 byte 数组中

String substring(int beginIndex)
返回一个新子串,从指定下标处开始,包含指定下标

String substring(int beginIndex, int endIndex)
返回一个新子串,从执定下标开始,到结束下标为止,但不包含结束下标

static String valueOf(int i)
把int转成String

char[] toCharArray()
将字符串转成字符数组

StringBuilder と StringBuffer

特徴

  • カプセル化された char[] 配列
  • は文字の可変シーケンスです
  • 文字コンテンツを変更できる一連の一般的なメソッドを提供します
  • 文字列連結「+」の文字列を置換するために一般的に使用される append()
  • 内部文字配列のデフォルトの初期容量は 16 です。 super(str.length() + 16);
  • 16 より大きい場合、容量の拡張が試行され、新しいアレイの元のサイズが 2 倍 + 2 になります。容量が十分でない場合は、必要な容量まで直接拡張されます。int newCapacity = 値.長さ * 2 + 2;
  • StringBuffer 1.0 のデビューはスレッドセーフですが、StringBuilder 1.5 のデビューはスレッドセーフではありません
  • StringBuffer メソッドには同期キーワードがありますが、StringBuilder にはありません。
  • 実行効率の観点からは、StringBuilder > StringBuffer > String

可変と不変を理解する

  • Immutable:アドレスが変更されない場合、文字列を展開することはできません。
  • 変数: stringBuilder/stringbuffer のオブジェクト アドレスが変更されていない場合、文字列サイズを直接追加するだけで拡張できます。

文字列連結方式

構文: string.append(string);

戻り値:元の文字列

        String s = "hello world";
        StringBuffer s1 = new StringBuffer();
        StringBuffer append = s1.append(s);
        System.out.println(s1);//hello world
        System.out.println(s1==append);//true

文字列削除メソッド

構文: string.delete(インデックス1, インデックス2)

機能: [インデックス 1、インデックス 2) の間のすべての文字を削除します。

戻り値:元の文字列

        StringBuilder s1 = new StringBuilder("hello world");
        StringBuilder delete = s1.delete(3, 6);
        System.out.println(delete);
        System.out.println(s1==delete);//true

文字列に文字を挿入する

構文: string.insert(インデックス, 文字列)

機能:指定されたインデックスの前に文字を追加します。

戻り値:元の文字列

        StringBuffer s1 = new StringBuffer("hello");
        StringBuilder s2=new StringBuilder("world");
        StringBuffer s = s1.insert(1, "ab");
        s2.insert(5, "cd");//在末尾处追加字符串,如果索引为6则报错
        System.out.println(s1);//habello
        System.out.println(s1==s);//true
        System.out.println(s2);//worldcd

文字列置換メソッド

構文: string.replace(index1,index2,str string)

機能:文字列 [インデックス 1, インデックス 2) 内のすべての文字を str 文字列に置き換えます。

戻り値:元の文字列

        StringBuilder s1 = new StringBuilder("hello world");
        StringBuilder s2 = s1.replace(3, 6, "no");
        System.out.println(s2);
        System.out.println(s1==s2);//true

文字列反転メソッド

構文: string.reverse()

戻り値:元の文字列

        StringBuffer s1 = new StringBuffer("abc");
        StringBuffer reverse = s1.reverse();
        System.out.println(s1);//cba
        System.out.println(s1==reverse);//true

文字列に対応するインデックスの文字を検索します 

構文: string.charAt(index)

戻り値:対応するインデックスの文字

        StringBuffer s1 = new StringBuffer("hello world");
        char c = s1.charAt(6);
        System.out.println(c);

インターセプト文字列

構文:文字列.部分文字列(インデックス1, インデックス2)

戻り値:文字列内の文字で構成される文字列 [インデックス 1、インデックス 2)

        StringBuffer s1 = new StringBuffer("hello world");
        String substring = s1.substring(2, 5);
        System.out.println(substring);

正規表現

意味:正しい文字列の形式。ユーザーが入力した内容が形式の要件を満たしているかどうかを判断するためによく使用されます。大文字と小文字が厳密に区別されることに注意してください。

注: Java 文字列の正規一致は厳密に順序どおりに行われます。 

正規表現記号テーブル

正規表現の一般的な方法

一致()

構文: String.Matches (通常)

機能:現在の文字列が正規表現に一致するかどうかを判断し、一致する場合は true を返し、一致しない場合は false を返します。

戻り値:ブール値

        //身份证号的规律:一共是18位,前17位是数子,第18位有可能是数字,也有可能是X
        String regex = "\\d{17}[0-9X]";
        System.out.println("请输入您的身份证号");
        String s = new Scanner(System.in).nextLine();
        boolean matches = s.matches(regex);
        System.out.println(matches);

replaceAll()

構文: string.replaceAll(正規、部分文字列)

機能:文字列内の通常の内容を文字列に置き換えます。

戻り値:置換された文字列

        String regex = "\\d[0-9X]";
        String s = "he1Xo";
        String s1 = s.replaceAll(regex, "ll");
        System.out.println(s1);

スプリット()

構文: string.split (通常)

機能:正規表現に一致する文字列の内容で文字列を分割します。

戻り値:分割された文字列配列

        String regex = "\\d[0-9X]";
        String s = "abc23def0Xghi";
        String[] split = s.split(regex);
        System.out.println(Arrays.toString(split));//[abc, def, ghi]

Supongo que te gusta

Origin blog.csdn.net/m0_60027772/article/details/126094259
Recomendado
Clasificación