java過濾
1. java 文件過濾器怎麼實現。
import java.io.File;
import java.io.FilenameFilter;
/**
* 文件過濾器的簡單實現
*
* @ ajaxfan
* @date 2010-04-17
*/
public class FileNameFilterDemo {
public static void main(String[] args) {
list("d:/");
}
/**
* 列出特定路徑下的txt文件
*
* @param directoryName
* 路徑名
*/
private static void list(String directoryName) {
File dir = new File(directoryName);
// 確定該路徑指向一個目錄
if (dir.exists() && dir.isDirectory()) {
// 列出所有結尾為txt的文件
File[] files = dir.listFiles(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
return name.endsWith("txt");
}
});
System.out.println(java.util.Arrays.toString(files));
}
}
}
2. java 字元串過濾
packagetest;
importjava.util.HashMap;
/**
*maxLength-需要過濾最長字元串的長度
*filterStrs<string,string>-需要過濾字元串的集合,key為需要過濾字元串,value為過濾成的字元串如"*"
*@authorAdministrator
*
*/
publicclassTest{
privateintmaxLength;
privateHashMap<String,String>filterStrs=newHashMap<String,String>();
/**
*初始化需要過濾掉*的數量
*/
privateStringinitStr(intn){
StringBuffersb=newStringBuffer();
for(inti=0;i<n;i++){
sb.append('*');
}
returnsb.toString();
}
/**
*str-被過濾得字元串
*s-需要過濾得字元串
*獲得剩下未過濾的字元串
*/
privateStringgetNextStr(Stringstr,intstart,intslength){
if(start==0){
str=str.substring(slength);
}elseif(start+slength<str.length()){
str=str.substring(start+slength);
}
returnstr;
}
/**
*str-被過濾得字元串
*s-需要過濾得字元串
*獲得過濾後的字元串
*/
(StringBuffersb,Stringstr,intstart,Strings){
if(start!=0){
sb.append(str.substring(0,start));
}
sb.append(filterStrs.get(s));
returnsb;
}
/**
*str-被過濾的字元串
*過濾,並組合過濾後的字元串
*/
publicStringfilter(Stringstr){
StringBufferresultStr=newStringBuffer();
for(intstart=0;start<str.length();start++){
for(intend=start+1;end<=str.length()&&end<=start+maxLength;end++){
Strings=str.substring(start,end);
intslength=s.length();
if(filterStrs.containsKey(s)){
resultStr=getFilterStr(resultStr,str,start,s);
str=getNextStr(str,start,slength);
start=0;
end=start;
}
}
}
resultStr.append(str);
returnresultStr.toString();
}
publicvoidput(Stringkey){
intkeyLength=key.length();
filterStrs.put(key,initStr(keyLength));
if(keyLength>this.maxLength)
maxLength=keyLength;
}
publicstaticvoidmain(String[]agrs){
Testt=newTest();
t.put("TMD");
t.put("TNND");
t.put("NND");
System.out.println(t.filter("TMD,TNND..TMDTMDTMDTMD.tTNNDTMDTNNDTNNDTNND"));
}
}
3. java語言實現滿足多條件匹配簡單過濾輸出問題
package;
importjava.io.File;
importjava.io.FileWriter;
importjava.io.IOException;
importjava.util.Arrays;
importjava.util.LinkedList;
publicclassCombin
{
privatestaticStringline=System.getProperty("line.separator");
privatestaticLinkedList<String[]>recursionSub(LinkedList<String[]>list,intcount,String[]array,intind,
intstart,int...indexs)
{
start++;
if(start>count-1)
{
returnnull;
}
if(start==0)
{
indexs=newint[array.length];
}
for(indexs[start]=ind;indexs[start]<array.length;indexs[start]++)
{
recursionSub(list,count,array,indexs[start]+1,start,indexs);
if(start==count-1)
{
String[]temp=newString[count];
for(inti=count-1;i>=0;i--)
{
temp[start-i]=array[indexs[start-i]];
}
booleanflag=true;
L:for(inti=0;i<temp.length;i++)
{
for(intj=i+1;j<temp.length;j++)
{
if(temp[i]==temp[j])
{
flag=false;
breakL;
}
}
}
if(flag)
{
list.add(temp);
}
}
}
returnlist;
}
privatestaticvoidfilter(LinkedList<String[]>list)throwsIOException
{
Filefile=newFile("c:/116.txt");
FileWriterfw=newFileWriter(file);
for(String[]strings:list)
{
intcount1=0,count2=0,count3=0;
Stringtemp=Arrays.toString(strings).replaceAll("[\[\]\s]","");
if(temp.contains("01"))
{
count1++;
count3++;
}
if(temp.contains("02"))
{
count1++;
count2++;
}
if(temp.contains("03"))
{
count1++;
}
if(temp.contains("06"))
{
count2++;
count3++;
}
if(temp.contains("08"))
{
count2++;
count3++;
}
if(temp.contains("09"))
{
count2++;
count3++;
}
if(temp.contains("07"))
{
count3++;
}
if(temp.contains("10"))
{
count3++;
}
if(temp.contains("11"))
{
count3++;
}
if(count1>=1&&count1<=2&&count2>=1&&count2<=3&&count3>=0&&count3<=2)
{
fw.write(temp+line);
}
}
fw.flush();
fw.close();
}
publicstaticvoidmain(String[]args)throwsIOException
{
String[]A={"01","02","03","04","05","06","07","08","09","10","11"};
LinkedList<String[]>list=newLinkedList<String[]>();
recursionSub(list,6,A,0,-1);
//假定從1-11這11個數字中任選6個全組合輸出(每行輸出6個不相同數字,並且從小到大排列)
for(String[]strings:list)
{
Stringtemp=Arrays.toString(strings).replaceAll("[\[\]\s]","");
System.out.println(temp);
}
//將第一問得到數據過濾,並且同時滿足下面3條條件就輸出,輸出結果用"116.txt"保存在C盤
filter(list);
}
}
4. java過濾string所有空格
JAVA中去掉復空格
1. String.trim()
trim()是去掉首尾制空格
2.str.replace(" ", ""); 去掉所有空格,包括首尾、中間
代碼如下:
String str = " hell o ";
String str2 = str.replaceAll(" ", "");
System.out.println(str2);
3.或者replaceAll(" +",""); 去掉所有空格
4.str = .replaceAll("\\s*", "");
可以替換大部分空白字元, 不限於空格
\s 可以匹配空格、製表符、換頁符等空白字元的其中任意一個
5. JAVA特殊字元過濾方法
^public static String StringFilter(String str) throws PatternSyntaxException {
// 只允許字母和數字源
// String regEx = "[^a-zA-Z0-9]";
// 清除掉所有特殊字元
String regEx="[`~!@#$%^&*()+=|{}':;',\\[\\].<>/?~!@#¥%……&*()——+|{}【】『;:」「』。,、?]";
Pattern p = Pattern.compile(regEx);
Matcher m = p.matcher(str);
return m.replaceAll("").trim();
}
6. java怎樣過濾危險字元,該怎麼解決
就WEB應用來說,所謂危險的字元一般就是兩種
一個是內SQL注入容,一個是HTML語法注入
SQL注入主流的框架都可以搞定,JDBC永遠都使用preparedstatement就可以防止所有的sql注入,關鍵是用戶輸入都要通過佔位符往裡放,就自動的替換掉了特殊字元了。hibernate等orm框架都會搞定這個問題
HTML語法注入是指用戶輸入的html代碼回顯出來,這樣如果不轉義就可以破壞頁面的結構或者注入腳本。所以現在的網站都不允許用戶直接輸入html代碼了,現在都是一些UBB標簽來完成一些效果。HTML主要最好的解決辦法是在回顯的時候進行轉義,所有的MVC框架或者展示層框架都有HTML轉義的支持,包括struts,spring,volicty等,注意觀察他們用於顯示的標簽
7. java如何創建過濾器
弄過濾器,要實現介面
主要是用過濾器處理中文編碼,至於要用來做什麼,再自己寫比如許可權控制,登錄驗證,之類
//下面這是一個類。。。。
import java.io.IOException;
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 EncodingFilter implements Filter {
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
request.setCharacterEncoding("GBK");//處理編碼
response.setCharacterEncoding("GBK");//處理編碼
chain.doFilter(request, response);//讓過濾器執行下一個請求
}
public void destroy() {}
public void init(FilterConfig arg0) throws ServletException {}
}
//下面這個是在web.xml下的配置
<filter>
<filter-name>encoding</filter-name>
<filter-class>
剛剛創建的那個實現filter介面的類的位置
例如:com.temp.filter.EncodingFilter
</filter-class>
</filter>
<filter-mapping>
<filter-name>encoding</filter-name>
<url-pattern>*.jsp這個是以jsp為後綴的文件都攔截下來</url-pattern>
</filter-mapping>
可以寫多個的<filter-mapping>來配置你所要攔截的東西
8. java過濾器怎麼指定不過濾哪些文件
port java.io.FilenameFilter;
/**
* 文件過濾器的簡單實現
*
* @author ajaxfan
* @date 2010-04-17
*/
public class FileNameFilterDemo {
public static void main(String[] args) {
list("d:/");
}
/**
* 列出特定路徑下的txt文件
*
* @param directoryName
* 路徑名
*/
private static void list(String directoryName) {
File dir = new File(directoryName);
// 確定該路徑指向一個目錄
if (dir.exists() && dir.isDirectory()) {
// 列出所有結尾為txt的文件
File[] files = dir.listFiles(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
return name.endsWith("txt");
}
});
System.out.println(java.util.Arrays.toString(files));
}
}
}
9. 如何用java過濾器是不要把login.jsp頁面也過濾掉
|public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest hrequest = (HttpServletRequest) request;
String uri = hrequest.getRequestURI();得到請求地抄址
String file[] = uri.split("/");通過/分隔,這樣,數組的最後一個值,就是頁面,
你比較下file[file.lenght-1].equals("login.jsp")就可以了。
if(file[file.lenght-1].equals("login.jsp"||)){}要解除某頁面的過濾,用||在if裡面添加就可以
chain.doFilter(request, response);
}
為了讓層次跟清晰一點,最好還是分文件夾。
10. java編程 如何讓實現過濾 「臟字」
只能枚舉你要過濾的所有「臟字」了。最好寫在一個文件裡面,不要直接用數組。
寫個類完成將「臟字」替換為「*」號的邏輯。
加個過濾器,攔截提交留言的請求,並調用邏輯。