簡體   English   中英

從java中的字符串中刪除垃圾字符

[英]Remove junk characters from string in java

我有這樣的字符串:

測試家具-34_TEST& ;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;#38;amp;amp;#38;amp;#38; GT;

我的要求是從上述字符串中刪除所有這些垃圾字符。 所以我的預期輸出將是:

TEST FURNITURE-34_TEST

我試過下面的代碼

public static String removeUnPrintableChars(String str) {
    if (str != null) {
        str = str.replaceAll("[^\\x00-\\x7F]", "");
        str = str.replaceAll("[\\p{Cntrl}&&[^\r\n\t]]", "");
        str = str.replaceAll("\\p{C}", "");
        str = str.replaceAll("\\P{Print}", "");
                    
        str = str.substring(0, Math.min(256, str.length()));
        str = str.trim();
        if (str.isEmpty()) {
            str = null;
        }
    }
    return str;
}

但它什么也不做。 除了查找每個字符並將其替換為空字符之外,有人可以幫我解決從字符串中替換這些字符的通用解決方案嗎?

拆分字符串的簡單方法:

public class Trim {
public static void main(String[] args) {
    String myString = "TEST FURNITURE-34_TEST&"
            + "amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;#38;amp;amp;"
            + "#38;amp;#38;gt;";
    String[] parts = myString.split("&");
    String part1 = parts[0];
    System.out.println(parts[0]);
}
}

鏈接到原始線程: 如何在 Java 中拆分字符串

您提供的示例字符串(在您的帖子和評論中)相當荒謬,在我看來,無論生成它們,都應該燒毀......兩次。

在您的字符串上嘗試以下方法。 通過將輸入字符串添加到 2D可移動項目字符串數組,添加您喜歡從輸入字符串中刪除的任何內容 這個二維數組包含String#replaceAll()方法的准備字符串。 每行的第一個元素包含要替換的特定字符串項的正則表達式(regex),每行的第二個元素包含要替換找到的項的字符串項。

public static String cleanString(String inputString) {
    String[][] removableItems = {
                                 {"(&?amp;){1,}", " "}, 
                                 {"(#38);?", ""}, 
                                 {"gt;", ""}, {"lt;", ""}
                                };
    
    String desiredString = inputString;
    for (int i = 0; i < removableItems.length; i++) {
            desiredString = desiredString.replaceAll(removableItems[i][0], 
                                                     removableItems[i][1]).trim();
    }
    return desiredString;
}

您可以使用此方法。 這是標記單詞邊界的工作。

    public static String removeUnPrintableChars(String str) {
    if(str != null){
        str = str.replaceAll("(\\b&?\\w+;#?)", "");
    }

    return str;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM