[英]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.