请问,如何在一个String中寻找与之匹配的String(最好是正则表达式)。如在ABEBDBCABDACBCACABCEABC先分成ABE,BD,BC,ABD,AC,BC,AC,,ABCE,ABC几个String。然后在其中找到AC的组合--AC不一定相连-如ABC也算。统计AC出现的次数。
解决方案 »
- JSlider控制颜色变化未能实现的问题。程序编译运行无错。
- 想在按钮上,调出"打开文件"对话框,是什么类?
- java session读取对象
- 使用ObjectInputStream读取Socket传输的对象,为什么发一次,读两次,且第二次出错
- 求助 SWT 做一个图形控件
- java多线程的简单问题
- [高分]求详解JComponent类极其用法的文章!
- 请问java能不能实现delphi中with..do的功能
- 求救:JTable( 放在JScrollPane中 )中加入一行后, 然后让其获得焦点且滚动条自动下来!
- 菜鸟问题
- SWT的TABITEM的宽度怎么调?设置IMAGE后总是比IMAGE宽
- 【Log4j---难题!!!求解!】log4j 的配置文件中,在一条信息输出中可以定义多个 %m参数吗?如何实现?
ABDAC
ABEBDBCABDACBCACABCEABC
算不算??
你的目的是否可以描述为:含有AC,AC只出现一次,且A在C前?
public final class Scannerextends Objectimplements Iterator<String>一个可以使用正则表达式来分析基本类型和字符串的简单文本扫描器。 Scanner 使用分隔符模式将其输入分解为标记,默认情况下该分隔符模式与空白匹配。然后可以使用不同的 next 方法将得到的标记转换为不同类型的值。
private String totalStr;
private String findStr;
private int count = 0;
public SearchStr(String totalStr, String findStr) {
this.totalStr = totalStr;
this.findStr = findStr;
}
public int countFindStr() {
Pattern p = Pattern.compile(findStr);
Matcher m = p.matcher(totalStr);
while(m.find()) count++;
return count;
}
public static void main(String[] args) {
SearchStr ss = new SearchStr(args[0], args[1]);
System.out.println(args[0] + "共找到" +
ss.countFindStr() + "个" + args[1]);
}
}
int count = 0;
String str = "ABEBDBCABDACBCACABCEABC";
List<String> arrList = new ArrayList<String>();
for(int i=0;i<str.length()-1;i++){
char pre = str.charAt(i);
char next = str.charAt(i+1);
if(pre>next){
arrList.add(str.substring(0, i+1));
str = str.substring(i+1);
i=0;
}
}
for(int i=0;i<arrList.size();i++){
Pattern p = Pattern.compile("A.*C");
Matcher m = p.matcher((String)arrList.get(i));
if(m.find()){
count++;
}
}
return count;
}
int count = 0;
String str = "ABEBDBCABDACBCACABCEABC";
List<String> arrList = new ArrayList<String>();
for(int i=0;i<str.length()-1;i++){
char pre = str.charAt(i);
char next = str.charAt(i+1);
if(pre>next){
arrList.add(str.substring(0, i+1));
str = str.substring(i+1);
i=0;
}
}
arrList.add(str);
for(int i=0;i<arrList.size();i++){
Pattern p = Pattern.compile("A.*C");
Matcher m = p.matcher((String)arrList.get(i));
if(m.find()){
count++;
}
}
return count;
}
漏了最后一个字符串,修改后没有问题了