我在给医院做项目,医生要求数字末尾都拼接单位,比如"(4)9*&5MM)8999)3&4*9*[email protected]" 这一串文字中的数字末尾都拼接一个单位,变成(4°)9°*&5°MM)8999°)3°&4°*9°*2°@,我的代码如下图所示:

字符串中的数字末尾拼接指定的字符

代码片段:
/**
 * 数字末尾拼接°符号
 */
public static String appendDegreeMark(String content) {
    int lastEndIndex = 0;
    Matcher matcher = pattern.matcher(content);
    StringBuilder stringBuilder = new StringBuilder();
    while (matcher.find()) {
        int startIndex = matcher.start(0);
        if (lastEndIndex != startIndex) {
            String preContent = content.substring(lastEndIndex, startIndex);
            stringBuilder.append(preContent); //拼接上次数字的末尾位置到当前匹配数字的起始位置之间的非数字文本
        }
        stringBuilder.append(matcher.group(0)).append("°");//拼接单位
        lastEndIndex = matcher.end(0);//下一轮的起始位置
    }
    //下一轮的起始位置等于文本长度则代表已经拼接完所有文本了,否则拼接剩余的文本 
    if (lastEndIndex < content.length()) {
        String lastStr = content.substring(lastEndIndex ,content.length());
        stringBuilder.append(lastStr);
    }
    return stringBuilder.toString();
}

相关文章: