搜索对话框字符串过滤

package com.sunsheen.ids.composite.dialog.select;


import java.util.ArrayList;
import java.util.Map;


import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.List;
import org.eclipse.swt.widgets.Text;
import org.eclipse.swt.widgets.Widget;


import com.sunsheen.ids.composite.dialog.FileViewer;
import com.sunsheen.ids.composite.utils.IdsUtils;
import com.sunsheen.jfids.studio.dialog.compoments.listeners.SDialogOnClickListener;


public class onChange implements SDialogOnClickListener {


@Override
public void run(Map<String, Widget> coms, Map<String, Object> params,
Event event, String currentKey) {
Text fileNameText=(Text)coms.get("fileName");
String fileName=fileNameText.getText().trim();
List colum=(List)coms.get("show");
String blank[]=new String[0];
colum.setItems(blank);//清空列表;
Label showText=(Label)coms.get("showText");
showText.setText("");//清空显示
//show0是临时添加,用来保存文件列表;
if(params.get("show0")==null)
{
java.util.List<String> list = new FileViewer().getListFiles(params.get("path").toString(), "java", true);
String[] arr = (String[]) list.toArray(new String[list.size()]);
params.put("show0", arr);
}

String []arr=(String[]) params.get("show0");
if(fileName.length()!=0)
{
//在正则表达式中,这些特殊符?,*等,是表示重复次数,前面必须有一个字符。但我们的要求是输入*就表示任意多个字符,所以要转化;
if(fileName.contains("?"))
{
// ?本身在正则表达式是为特殊,所以要转成字符串加\\? 才表示字符串中的? 。因为replaceAll中两个参数为正则表达式。
fileName=fileName.replaceAll("\\?", ".?");
}
if(fileName.contains("*"))
{
fileName=fileName.replaceAll("\\*", ".*");
}
for(int i=0;i<arr.length;i++)
{
String str=arr[i].substring(arr[i].lastIndexOf("\\")+1,arr[i].length());
if(str.toLowerCase().matches(".*"+fileName.toLowerCase()+".*"))//matches是全额匹配,所以前后加.*,表示任意多个字符
{
//全路径为:f:\\,但js引用是/,所以得转换
String path=(String) params.get("path");//工程路径;
String fullPath=arr[i].replaceAll("\\\\", "/");
String path1=fullPath.substring(path.length()+1,fullPath.length());
colum.add(str+" - "+path1);
}
}
}
}
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值