「java过滤字」java过滤字符
本篇文章给大家谈谈java过滤字,以及java过滤字符对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、java如何快速过滤掉某个字符串包含的最长的一个词
- 2、在JAVA中怎么实现关键字过滤
- 3、java过滤sql关键字的正则替换掉
- 4、jsp\java 如何编写过滤器过滤特殊字符?
- 5、java 字符串过滤
java如何快速过滤掉某个字符串包含的最长的一个词
java快速过滤掉某个字符串包含的最长的一个词方法:把敏感词的第一个字符取出来,作为比较对象。遍历整个字符串,如果发现字符跟敏感词第一个字符相同,就从字符串取出跟关键词相同长度的子串比较,如果相同就替换。本算法比较适合敏感词都不长的场合。Java是一门面向对象的编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。
在JAVA中怎么实现关键字过滤
自己判断一下, 字符串中是否包含某个关键字即可, String.contains(CharSequence s) 如果存在返回true, 否则返回false
java过滤sql关键字的正则替换掉
java过滤sql关键字的正则替换掉方法如下:
可以在C#中这样做:Regexregex = newRegex(@"]*[^");
stringcleanedHtml = regex.Replace(html, "");
可是我并不想再写个循环去遍历每条记录,然后保存每条记录,我想在数据库中一步到位,而sql只提供了简单的replace函数,这个函数明显不能达到咱的要求,那就去写一个自定义函数吧。
函数源代码如下:CREATE functiondbo.regexReplace
(@source ntext,--原字符串@regexp varchar(1000),--正则表达式@replace varchar(1000),--替换值@globalReplace bit=1,--是否是全局替换@ignoreCase bit=0 --是否忽略大小写)returnS varchar(1000)AS
begin
declare@hr intege
declare@objRegExp integer
declare@result varchar(5000)exec@hr =sp_OACreate'VBScript.RegExp',@objRegExp OUTPUT
IF@hr 0 begin
exec@hr =sp_OADestroy@objRegExp
returnnullend
exec@hr =sp_OASetProperty@objRegExp,'Pattern',@regexp
IF@hr 0 begin
exec@hr =sp_OADestroy@objRegExp
returnnullend
exec@hr =sp_OASetProperty@objRegExp,'Global',@globalReplace
IF@hr 0 begin
exec@hr =sp_OADestroy@objRegExp
returnnullend
exec@hr =sp_OASetProperty@objRegExp,'IgnoreCase',@ignoreCase
IF@hr 0 begin
exec@hr =sp_OADestroy@objRegExp
returnnullend
exec@hr =sp_OAMethod@objRegExp,'Replace',@result OUTPUT,@source,@replace
IF@hr 0 begin
exec@hr =sp_OADestroy@objRegExp
returnnullend
exec@hr =sp_OADestroy@objRegExp
IF@hr 0 begin
returnnullend
return@result
end
需要注意的是,即使写好了这个函数,也并不能马上使用。执行这个函数时可能会出现以下的错误:Msg 15281, Level 16, State 1, Line 1
SQL Server blocked access to procedure 'sys.sp_OACreate' of component 'Ole Automation Procedures' because this component is turned off as part of the security configuration for this server. A system administrator can enable the use of 'Ole Automation Procedures' by using sp_configure. For more information about enabling 'Ole Automation Procedures', see "Surface Area Configuration" in SQL Server Books Online.
这是因为未开启Ole Automation Procedures选项,MSDN中的Ole Automation Procedures选项。执行下面的语句开启这个选项:sp_configure'show advanced options',1;GO
RECONFIGURE;GOsp_configure'Ole Automation Procedures',1;GO
RECONFIGURE;GO
所有的准备工作都已经做好,那就试验一下吧。
Example1:忽略大小写并替换selectdbo.regexReplace('123456',']*[^','',1,1)
Example2: 使用贪婪匹配
html代码:
Also Available - Smith Hogan: Criminal Law Cases Materials 10th ed
There is, as ever, detailed analysis of the many recent case developments, in particular,
a revision of the chapter dealing with secondary liability and joint enterprise.
调用代码:selectdbo.regexReplace(html,']*(.|\n)*?','',1,1)
Example3:去除html标签selectdbo.regexReplace('
Key Contact:
Mr Jack, Zhou
General Manager
Mr Adu, Ho
Marketing Director
Overseas Sales
MsWinny, Luo
Sales Manager
Overseas Sales',']*','',1,0)
Example4:数据库字段值替换updateBooks。
jsp\java 如何编写过滤器过滤特殊字符?
package com.jingdu.common;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class IllegalCharacterFilter implements Filter {
private String[] characterParams = null;
private boolean OK=true;
public void init(FilterConfig config) throws ServletException {
// if(config.getInitParameter("characterParams").length()1)
// OK=false;
// else
// this.characterParams = config.getInitParameter("characterParams").split(",");
System.out.println("初始化");
}
@SuppressWarnings("unchecked")
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain arg2) throws IOException, ServletException {
HttpServletRequest servletrequest = (HttpServletRequest) request;
HttpServletResponse servletresponse = (HttpServletResponse) response;
String param = "";
String paramValue = "";
//设置请求编码格式
servletresponse.setContentType("text/html");
servletresponse.setCharacterEncoding("UTF-8");
servletrequest.setCharacterEncoding("UTF-8");
java.util.Enumeration params = request.getParameterNames();
//循环读取参数
while (params.hasMoreElements()){
param = (String) params.nextElement(); //获取请求中的参数
String[] values = servletrequest.getParameterValues(param);//获得每个参数对应的值
for (int i = 0; i values.length; i++) {
paramValue = values[i];
//转换目标字符变成对象字符,可以多个。后期扩展特殊字符库用于管理
paramValue = paramValue.replaceAll("'","");
paramValue = paramValue.replaceAll("@","");
paramValue = paramValue.replaceAll("胡锦涛","***");
//这里还可以增加,如领导人 自动转义成****,可以从数据库中读取非法关键字。
values[i] = paramValue;
}
//把转义后的参数重新放回request中
request.setAttribute(param, paramValue);
}
//继续向下 执行请求,如果有其他过滤器则执行过滤器
arg2.doFilter(request, response);
}
public void destroy() {
// TODO Auto-generated method stub
}
}
java 字符串过滤
package test;
import java.util.HashMap;
/**
* maxLength-需要过滤最长字符串的长度
* filterStrsstring,string-需要过滤字符串的集合,key为需要过滤字符串,value为过滤成的字符串如"*"
* @author Administrator
*
*/
public class Test{
private int maxLength;
private HashMapString,String filterStrs=new HashMapString,String();
/**
* 初始化需要过滤掉*的数量
*/
private String initStr(int n){
StringBuffer sb=new StringBuffer();
for(int i=0;in;i++){
sb.append('*');
}
return sb.toString();
}
/**
* str-被过滤得字符串
* s-需要过滤得字符串
* 获得剩下未过滤的字符串
*/
private String getNextStr(String str,int start,int slength){
if(start==0){
str=str.substring(slength);
}else if(start+slengthstr.length()){
str=str.substring(start+slength);
}
return str;
}
/**
* str-被过滤得字符串
* s-需要过滤得字符串
* 获得过滤后的字符串
*/
private StringBuffer getFilterStr(StringBuffer sb,String str,int start,String s){
if(start!=0){
sb.append(str.substring(0,start));
}
sb.append(filterStrs.get(s));
return sb;
}
/**
* str-被过滤的字符串
* 过滤,并组合过滤后的字符串
*/
public String filter(String str) {
StringBuffer resultStr=new StringBuffer();
for(int start=0;startstr.length();start++){
for(int end=start+1;end=str.length()end=start+maxLength;end++){
String s=str.substring(start, end);
int slength=s.length();
if(filterStrs.containsKey(s)){
resultStr=getFilterStr(resultStr,str,start,s);
str=getNextStr(str,start,slength);
start=0;
end=start;
}
}
}
resultStr.append(str);
return resultStr.toString();
}
public void put(String key) {
int keyLength=key.length();
filterStrs.put(key, initStr(keyLength));
if(keyLengththis.maxLength)
maxLength=keyLength;
}
public static void main(String[] agrs){
Test t=new Test();
t.put("TMD");
t.put("TNND");
t.put("NND");
System.out.println(t.filter("TMD,TNND..TMDTMDTMDTMD.tTNND TMDTNNDTNNDTNND"));
}
}
关于java过滤字和java过滤字符的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
发布于:2022-12-09,除非注明,否则均为
原创文章,转载请注明出处。