>  기사  >  Java  >  Java의 문자열 연산 소개(코드 예)

Java의 문자열 연산 소개(코드 예)

不言
不言앞으로
2019-02-11 11:23:333113검색

이 기사는 Java의 문자열 연산(코드 예제)을 소개합니다. 필요한 참고 자료가 있으면 도움이 될 것입니다.

1. 문자열 연산 문자열 클래스

1. 개요

문자열은 특수 참조 데이터 유형이며 최종 클래스입니다.

2. 생성 방법

String str = "abc";

동치: char date[] = {'a','b','c'};

String str = new String{data };

3. 메인 메소드

char charAt(int index) char의 지정된 인덱스에 있는 값을 반환합니다.

boolean contain(CharSequence s) 문자열에 지정된 char 값 시퀀스가 ​​포함된 경우에만 true를 반환합니다.

boolean equals(Object anObject) 하위 문자열을 지정된 개체와 비교

int indexOf(int ch) 지정된 문자 번호를 반환합니다. 한 번 나타나는 인덱스 값

int length() 문자열의 길이를 반환하며 주로 루프 종료 조건에 사용됩니다.

boolean match(String regex) 문자열이 주어진 정규식과 일치하는지 확인

String replacement( char oldChar,char newChar) 문자열의 모든 oldChar를 newChar로 교체

String Split(String regex) 규칙에 따라 문자열을 분할합니다

String subString(int startIndex) 문자열의 시작 인덱스 인덱스 뒤에 있는 문자열을 반환

String toLowerCase() 문자열의 모든 대문자를 소문자로 변환

String toUpperCase() 문자열의 모든 소문자를 대문자로 변환

String Trim() 모든 선행 및 후행 공백을 제거하고 반환

/*유형 변환* /
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 매개변수의 긴 문자열 형식을 반환합니다.
static String valueOf(Object obj)
Object 매개변수의 문자열 Object 형식을 반환합니다.

참고: String 문자열 "=="과 equals 메서드의 차이점:

String str = ""를 통해 선언된 경우 ==와 같음을 모두 사용할 수 있습니다.

new String을 통해 선언된 경우 ("") 예, ==는 사용할 수 없으며 같음만 사용할 수 있습니다.

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를 쿼리한 다음 subString 메서드를 사용하여 상위 문자열 인덱스(a+ 하위 문자열 길이) 및 count +1, indexOf 메서드의 반환 값이 -1이 될 때까지 이 작업을 반복하고 중지하고 count 값을 가져옵니다.

아이디어 2: 부모 문자열을 부분 문자열로 분할하여 문자열 배열을 얻으려면 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] => -9를 사용할 수 있습니다

d  => [0-9]와 동일

D => 숫자일 수 없습니다.

w => [a-zA-Z0-9_ ]

x와 동일한 문자, 숫자 및 밑줄을 나타냅니다. => x가 한 번 표시되거나 한 번 표시되지 않음을 나타냅니다.

x* {n,m} => x가 n~m번 나타남을 나타냄

X+  => x가 적어도 한 번 나타남을 나타냄

^  => Ending

요구 사항 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 cnblogs.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제