首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

StringHelper 工具類:常用字串處理、編碼轉換、分割與 HTML 過濾

     編輯:Java 相關知識

類別定義


package com.helper;

import java.util.StringTokenizer;

public class StringHelper {
    // ... 靜態工具方法
}

核心方法詳解

1. 空值安全轉換


/** 將 null 或 "null" 轉為空字串,並去除首尾空白 */
public static final String convertStringNull(String strOrig) {
    if (strOrig == null || "null".equals(strOrig)) return "";
    return strOrig.trim();
}

2. 分隔符分割字串陣列 (支援多字元分隔符)


/** 
 * @param strOrigin 原始字串
 * @param separator 分隔符 (正則或字面)
 * @return 非空項目陣列
 */
public static final String[] parserString(String strOrigin, String separator) {
    if (strOrigin == null) return null;
    StringTokenizer st = new StringTokenizer(strOrigin, separator);
    String[] result = new String[st.countTokens()];
    int idx = 0;
    while (st.hasMoreTokens()) {
        String token = st.nextToken();
        if (token != null && token.trim().length() > 0) 
            result[idx++] = token;
    }
    // 若有空項被跳過,需調整陣列大小 (略)
    return result;
}

注意:StringTokenizer 將分隔符視為**單字元集合**,非完整字串。需多字元分隔符請用 split(regex) 或手寫解析。

3. 編碼轉換:ISO-8859-1 ⇄ GBK (中文常用)


/** 請求參數解碼:ISO-8859-1 → GBK */
public static String toChineseStr(String strOrigin) {
    if (strOrigin == null || "null".equals(strOrigin)) return "";
    try {
        return new String(strOrigin.getBytes("ISO-8859-1"), "GBK");
    } catch (Exception e) { return strOrigin; }
}

/** 輸出編碼:GBK → ISO-8859-1 */
public static String toStandardStr(String strOrigin) {
    if (strOrigin == null || "null".equals(strOrigin)) return "";
    try {
        return new String(strOrigin.getBytes("GBK"), "ISO-8859-1");
    } catch (Exception e) { return strOrigin; }
}

適用場景:Tomcat 預設以 ISO-8859-1 解碼 URL/表單參數,中文需手動轉碼。

4. 通用分割 (手寫實現,支援多字元分隔符)


public static String[] split(String s, String separatorSign) {
    if (s == null) return null;
    List indices = new ArrayList<>();
    int idx = 0;
    while ((idx = s.indexOf(separatorSign, idx)) >= 0) {
        indices.add(idx);
        idx += separatorSign.length();
    }
    if (indices.isEmpty()) return new String[]{s};
    
    String[] result = new String[indices.size() + 1];
    int start = 0;
    for (int i = 0; i < indices.size(); i++) {
        result[i] = s.substring(start, indices.get(i));
        start = indices.get(i) + separatorSign.length();
    }
    result[result.length - 1] = s.substring(start);
    return result;
}

5. 空值轉 HTML 空白實體


/** null 或空字串 → &nbsp; */
public static final String filterNullStringToHtmlSpace(String strOrigin) {
    if (strOrigin == null || strOrigin.length() == 0) return " ";
    // 可擴展:轉義 < > & " 等防 XSS
    return strOrigin;
}

使用建議與現代化替代

需求推薦方案 (JDK 8+)備註
分割字串str.split(regex), Pattern.splitAsStream()效能好、支援正則
連接字串String.join(), StringJoiner, Collectors.joining()線程安全、可讀性高
空值檢查Objects.requireNonNull(), Optional契約式設計
編碼轉換StandardCharsets.UTF_8, new String(bytes, charset)避免硬編碼字串
HTML 轉義OWASP Java Encoder, Spring HtmlUtils.htmlEscape()防 XSS 完整方案

結語

StringHelper 涵蓋了早期 Java 開發中高頻的字串處理需求。現代開發建議優先使用標準庫、Guava、Apache Commons Lang3 (StringUtils) 等成熟工具庫,減少自造輪子,專注業務邏輯。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved