可以使用正则表达式来实现这个需求。以下是一个示例代码:

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Main {
    public static void main(String[] args) {
        String input = 'abc你好def';
        String result = getSubstringBeforeChinese(input);
        System.out.println(result); // 输出:abc

        input = 'abcdef';
        result = getSubstringBeforeChinese(input);
        System.out.println(result); // 输出:abcdef
    }

    public static String getSubstringBeforeChinese(String input) {
        Pattern pattern = Pattern.compile('^(.*?)[\u4e00-\u9fa5]');
        Matcher matcher = pattern.matcher(input);
        if (matcher.find()) {
            return matcher.group(1);
        }
        return input;
    }
}

这里使用正则表达式^(.*?)[\u4e00-\u9fa5]来匹配输入字符串中汉字前面的所有字符。解释一下正则表达式中的各个部分:

  • ^:表示匹配字符串的开头
  • (.*?):表示非贪婪匹配,匹配任意字符(除换行符)0次或多次
  • [\u4e00-\u9fa5]:表示一个汉字范围,用来匹配一个汉字字符

通过使用Matcher类的find()方法和group(1)方法,可以找到匹配的部分并返回。

注意:这个示例代码假设输入字符串中只包含了汉字、字母和数字等常见字符。如果输入字符串中包含其他特殊字符,可能需要对正则表达式进行适当修改。

Java截取字符串:获取汉字前面所有字符

原文地址: https://www.cveoy.top/t/topic/qmSS 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录