String过滤工具类-StringFilterUtil
============================================================================String过滤工具类:
package com.taoxw.utils.string; import java.util.regex.Matcher; import java.util.regex.Pattern; public class StringFilterUtil { /** 过滤字符串,去除[]中的内容,包括[] * @param input * @return */ public static String filterForBetween(String input, char startChar, char endChar) { int head = input.indexOf(startChar); // 标记第一个使用左括号的位置 if (head == -1) { return input; // 如果context中不存在括号,什么也不做,直接跑到函数底端返回初值str } else { int next = head + 1; // 从head+1起检查每个字符 int count = 1; // 记录括号情况 do { if (input.charAt(next) == startChar) count++; else if (input.charAt(next) == endChar) count--; next++; // 更新即将读取的下一个字符的位置 if (count == 0) // 已经找到匹配的括号 { String temp = input.substring(head, next); // 将两括号之间的内容及括号提取到temp中 input = input.replace(temp, ""); // 用空内容替换,复制给context head = input.indexOf(endChar); // 找寻下一个左括号 next = head + 1; // 标记下一个左括号后的字符位置 count = 1; // count的值还原成1 } } while (head != -1); // 如果在该段落中找不到左括号了,就终止循环 } return input; // 返回更新后的context } /** * str.replaceAll("\\s*", ""); //s* 可以匹配空格、制表符、换页符等空白字符的其中任意一个。 * str.replaceAll(" +",""); //去掉所有空格,包括首尾、中间 * str.replaceAll(" ", ""); //去掉所有空格,包括首尾、中间 * str.replace(" ",""); //去除所有空格,包括首尾、中间 * str.trim(); //去掉首尾空格 * @param inputStr * @return */ public static String filterForBlank(String inputStr){ if(StringCheckUtil.isEmpty(inputStr)) { return ""; } return inputStr.replace(" ", ""); } /** 过滤字符串,只允许字母和数字 * @param inputStr * @return */ public static String filterForChars(String inputStr) { if(StringCheckUtil.isEmpty(inputStr)) { return ""; } String regEx = "[^a-zA-Z0-9]"; Pattern p = Pattern.compile(regEx); Matcher m = p.matcher(inputStr); return m.replaceAll("").trim(); } /**过滤字符串,替换特殊字符 * <pre> * StringFilterUtil.filterForSpechars(null) * </pre> * @param inputStr * @return */ public static String filterForSpechars(String inputStr) { if(StringCheckUtil.isEmpty(inputStr)) { return ""; } String regEx = "[`~!@#$%^&*()+=|{}':;',\\[\\].<>/?~!@#¥%……&*()——+|{}【】‘;:”“’。,、?]"; Pattern p = Pattern.compile(regEx); Matcher m = p.matcher(inputStr); return m.replaceAll("").trim(); } /**过滤字符串,去除html标记 * <pre> * StringFilterUtil.filterForHtml(null) = "" * StringFilterUtil.filterForHtml("") = "" * StringFilterUtil.filterForHtml("<td>content</td>") = "content" * </pre> * @param inputStr * @return */ public static String filterForHtml(String inputStr) { if(StringCheckUtil.isEmpty(inputStr)) { return ""; } String regEx = "<.+?>"; Pattern p = Pattern.compile(regEx, Pattern.DOTALL); Matcher m = p.matcher(inputStr); return m.replaceAll(""); } /**过滤字符串,查询href条件 * <pre> * StringFilterUtil.filterForHref(null) * </pre> * @param inputStr * @return */ public static String filterForHref(String inputStr) { if(StringCheckUtil.isEmpty(inputStr)) { return ""; } String regEx = "href=\"(.+?)\""; Pattern p = Pattern.compile(regEx); Matcher m = p.matcher(inputStr); if(m.find()) { return m.group(1); }else { return ""; } } /**过滤字符串,匹配http://地址//,获取Url地址 * @param inputStr * @return * 备注:地址后需要以空格结束 */ public static String filterForUrl(String inputStr) { if(StringCheckUtil.isEmpty(inputStr)) { return ""; } String regEx = "(http://|https://){1}[\\w\\.\\-/:]+"; Pattern p = Pattern.compile(regEx); Matcher m = p.matcher(inputStr); StringBuffer buffer = new StringBuffer(); while(m.find()){ buffer.append(m.group()); buffer.append("\r\n"); } return buffer.toString(); } }
============================================================================String过滤工具测试类:
/** * 去除字符以及字符之间的内容 */ @Test public void test_filterBetween() { String context = "祝福大家(新年快乐),[万事如意],{虎年吉祥}"; // String filterForBetween = StringFilterUtil.filterForBetween(context, '(', ')'); // String filterForBetween = StringFilterUtil.filterForBetween(context, '[', ']'); String filterForBetween = StringFilterUtil.filterForBetween(context, '{', '}'); System.out.println(filterForBetween); } /** 过滤特殊字符,匹配http://地址//,获取Url地址*/ @Test public void test_filterUrl() { String filterForHref = StringFilterUtil.filterForUrl("ddfff http://baidu.com// tianchongwu"); System.out.println(filterForHref); } /** 过滤特殊字符,查询href条件*/ @Test public void test_filterHref() { String filterForHref = StringFilterUtil.filterForHref("<a href=\"index.html\">主页</a>"); System.out.println(filterForHref); } /** 过滤特殊字符,替换Html标记*/ @Test public void test_filterHtml() { // String filterForHtml = StringFilterUtil.filterForHtml(""); // String filterForHtml = StringFilterUtil.filterForHtml(null); String filterForHtml = StringFilterUtil.filterForHtml("<a href=\"index.html\">主页</a>"); System.out.println(filterForHtml); } /** 过滤特殊字符,替换特殊字符*/ @Test public void test_filterSpechars() { String filterForSpechars = StringFilterUtil.filterForSpechars("!@#陶雪武taoxuewu 123!@#"); System.out.println(filterForSpechars); } /** 过滤特殊字符,只允许字母和数字 */ @Test public void test_filterchars() { String filterForChars = StringFilterUtil.filterForChars("!@#陶雪武taoxuewu 123!@#"); System.out.println(filterForChars); }