栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

字符串处理工具类,主要是针对内容txt对标点符号进行处理-java处理字符串符号工具类实现逻辑

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

字符串处理工具类,主要是针对内容txt对标点符号进行处理-java处理字符串符号工具类实现逻辑

前言 替换全角空格 需要替换的公共特殊符号 将中文标点符号替换为相应的英文标点符号,并去除多余空格 字符串去掉所有标点符号 打印字符串Unicode码 去除标题末尾指定标点符号(保留部分特殊标点符号)

整体的实现类代码
 

import org.apache.commons.lang3.StringUtils;

import java.util.HashMap;
import java.util.Map;

import org.apache.commons.lang3.StringUtils;

import java.util.*;


public class CharacterUtils {

    
    private static final Map SPECIAL_CHAR_REPLACE_COMMON_MAP = new HashMap<>();

    
    private static final Map SPECIAL_CHAR_REPLACE_TITLE_MAP = new HashMap<>();

    
    private static final String REG_EX_BLANK_SBC = "[\p{Zs}]";

    
    private static final int SBC_TO_DBC_OFFSET = 65248;

    
    private static final char EMPTY_CHAR = ' ';

    
    private static final List TITLE_TRIM = Arrays.asList(':', ':', ',', ',', '、', ';', ';', '。', '.', '|', '/', '\', ' ');

    
    private static final String[] TITLE_RETAIN = {"···", "······", ".......", "..."};

    static {
        // 公共替换
        // 全角空格 -> 半角空格
        SPECIAL_CHAR_REPLACE_COMMON_MAP.put('u3000', EMPTY_CHAR);
        // 特殊空格 -> 半角空格
        SPECIAL_CHAR_REPLACE_COMMON_MAP.put('u00A0', EMPTY_CHAR);
        // 特殊符号 -> 半角空格
        SPECIAL_CHAR_REPLACE_COMMON_MAP.put('u200B', EMPTY_CHAR);
        SPECIAL_CHAR_REPLACE_COMMON_MAP.put('丨', '|');
        SPECIAL_CHAR_REPLACE_COMMON_MAP.put('|', '|');
        SPECIAL_CHAR_REPLACE_COMMON_MAP.put('︱', '|');
        SPECIAL_CHAR_REPLACE_COMMON_MAP.put('•', '·');
        SPECIAL_CHAR_REPLACE_COMMON_MAP.put('uFEFF', EMPTY_CHAR);
        // 日文句号
        SPECIAL_CHAR_REPLACE_COMMON_MAP.put('uFF61', '。');
        SPECIAL_CHAR_REPLACE_COMMON_MAP.put('™', EMPTY_CHAR);
        SPECIAL_CHAR_REPLACE_COMMON_MAP.put('℠', EMPTY_CHAR);
        SPECIAL_CHAR_REPLACE_COMMON_MAP.put('℗', EMPTY_CHAR);
        SPECIAL_CHAR_REPLACE_COMMON_MAP.put('©', EMPTY_CHAR);
        SPECIAL_CHAR_REPLACE_COMMON_MAP.put('®', EMPTY_CHAR);

        // 标题替换
        SPECIAL_CHAR_REPLACE_TITLE_MAP.putAll(SPECIAL_CHAR_REPLACE_COMMON_MAP);
        SPECIAL_CHAR_REPLACE_TITLE_MAP.put('【', '[');
        SPECIAL_CHAR_REPLACE_TITLE_MAP.put('】', ']');
        SPECIAL_CHAR_REPLACE_TITLE_MAP.put('「', '{');
        SPECIAL_CHAR_REPLACE_TITLE_MAP.put('」', '}');
        SPECIAL_CHAR_REPLACE_TITLE_MAP.put('《', '<');
        SPECIAL_CHAR_REPLACE_TITLE_MAP.put('》', '>');
        SPECIAL_CHAR_REPLACE_TITLE_MAP.put('“', '"');
        SPECIAL_CHAR_REPLACE_TITLE_MAP.put('”', '"');
        SPECIAL_CHAR_REPLACE_TITLE_MAP.put('‘', ''');
        SPECIAL_CHAR_REPLACE_TITLE_MAP.put('’', ''');
        SPECIAL_CHAR_REPLACE_TITLE_MAP.put('。', '.');
        SPECIAL_CHAR_REPLACE_TITLE_MAP.put(',', ',');
        SPECIAL_CHAR_REPLACE_TITLE_MAP.put('?', '?');
        SPECIAL_CHAR_REPLACE_TITLE_MAP.put(';', ';');
        SPECIAL_CHAR_REPLACE_TITLE_MAP.put(':', ':');
        SPECIAL_CHAR_REPLACE_TITLE_MAP.put('—', '-');
    }

    
    public static String removeSpecial(String str) {
        return str.replaceAll(REG_EX_BLANK_SBC, " ");
    }

    
    public static String formatContentText(String str) {
        if (StringUtils.isBlank(str)) {
            return StringUtils.EMPTY;
        }
        return str.replaceAll(" {8}", "    ");
    }

    
    public static String replaceCommon(String str) {
        if (StringUtils.isBlank(str)) {
            return StringUtils.EMPTY;
        }
        char[] chars = str.toCharArray();
        StringBuilder builder = new StringBuilder();
        for (char aChar : chars) {
            if (SPECIAL_CHAR_REPLACE_COMMON_MAP.containsKey(aChar)) {
                char replaceChar = SPECIAL_CHAR_REPLACE_COMMON_MAP.get(aChar);
                if (!Objects.equals(replaceChar, EMPTY_CHAR)) {
                    builder.append(replaceChar);
                }
            } else {
                builder.append(aChar);
            }
        }
        return builder.toString();
    }

    
    public static String replaceSbc(String str) {
        if (StringUtils.isBlank(str)) {
            return StringUtils.EMPTY;
        }
        char[] chars = str.toCharArray();
        StringBuilder builder = new StringBuilder();
        for (char aChar : chars) {
            if (SPECIAL_CHAR_REPLACE_TITLE_MAP.containsKey(aChar)) {
                char replaceChar = SPECIAL_CHAR_REPLACE_TITLE_MAP.get(aChar);
                if (!Objects.equals(replaceChar, EMPTY_CHAR)) {
                    builder.append(replaceChar);
                }
                continue;
            }
            if (aChar < 0x20 || aChar == 0x7F) {
                continue;
            }
            if (aChar > 'uFF00' && aChar < 'uFF5F') {
                // 全角替换为半角
                builder.append((char) (aChar - SBC_TO_DBC_OFFSET));
            } else {
                builder.append(aChar);
            }
        }
        return trimTitle(builder.toString().replaceAll(" {2,8}", " ").trim());
    }

    
    public static String removePunctuation(String str) {
        if (StringUtils.isBlank(str)) {
            return StringUtils.EMPTY;
        }
        return str.replaceAll("[\pP+~$`^=|<>~`$^+=|<>¥×]", "");
    }

    
    public static void printUnicode(String str) {
        StringBuilder unicode = new StringBuilder();
        for (int i = 0; i < str.length(); i++) {
            unicode.append("\u").append(Integer.toHexString(str.charAt(i))).append(" ");
        }
        System.out.println(unicode);
    }

    
    public static String trimTitle(String titleStr) {
        if (StringUtils.isBlank(titleStr)) {
            return titleStr;
        }
        for (String retain : TITLE_RETAIN) {
            if (titleStr.endsWith(retain)) {
                return titleStr;
            }
        }
        char[] chars = titleStr.toCharArray();
        int len = chars.length;
        while (len > 0 && TITLE_TRIM.contains(chars[len - 1])) {
            len--;
        }
        return titleStr.substring(0, len);
    }
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/489711.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号