用java 正则表达式 计算一个字符串中某个子串的个数

怎么计算出"abcdfdfsabcdfdsf abc fdfdabc" 这个字符串中abc的个数??

import java.util.regex.Pattern;
import java.util.regex.Matcher;

public class RegexTest {

public static void main(String args[]){
String str = "abcdfdfsabcdfdsf abc fdfdabcabc";

//1. 用这则表达式处理, 不过好像一点都不省事..
Pattern p = Pattern.compile("abc",Pattern.CASE_INSENSITIVE);
Matcher m = p.matcher(str);
int count = 0;
while(m.find()){
count ++;
}
System.out.println("ABC的个数 : " + count);

//2. 用普通方法来做,比较省事
String [] ary = ("," + str + ",").split("abc");
System.out.println("ABC的个数 : " + (ary.length - 1));
}
}

我觉得用split方法,以"abc"做分隔符将字串拆分成数组,这样比较简单.不过上面的代码(第二种方法)只能判断小写"abc"的个数, 如果你还需要将"ABC"或者"aBc"或者"abC"这样的字串都找出来, 只需要将第二种方法的代码修改成下面这样的就可以了:

String [] ary = ("," + str.toLowerCase() + ",").split("abc");
System.out.println("ABC的个数 : " + (ary.length - 1));
温馨提示:内容为网友见解,仅供参考
第1个回答  2009-08-13
public class Test1{
public static void main(String[] args){
String str = "abcdfdfsabcdfdsf abc fdfdabc";
int count = 0;
for(int i=0; i<str.length(); i++){
int n = str.indexOf("abc",i);//从i位置搜索“abc”,返回第一次出现的位置
if(n == i) count++;//如果返回的位置和开始搜索的位置相同,说明又出现了一次,计数器加一
}
System.out.println(count);
}
}//到API里查下,会有更好的方法,呵呵
第2个回答  2009-08-12
只要匹配一个 abcd ,那么就可以得到这个 abcd 的位置,再把原来的母串分割掉前面的 abcd,如第一个 abcd 查到后就可以得到 fdfsabcdfdsf abc fdfdabc子串,再把这个子串拿来比对,如此下去直到搜不到 abcd 为止。。。

用java 正则表达式 计算一个字符串中某个子串的个数
String str = "abcdfdfsabcdfdsf abc fdfdabcabc";\/\/1. 用这则表达式处理, 不过好像一点都不省事..Pattern p = Pattern.compile("abc",Pattern.CASE_INSENSITIVE);Matcher m = p.matcher(str);int count = 0;while(m.find()){ count ++;} System.out.println("ABC的个数 : " + count)...

java怎么获取字符串中指定的值?
在Java中获取字符串中指定的值可以使用以下几种方式:点击学习大厂名师精品课1.使用substring()方法可以使用String类提供的substring(intbeginIndex,intendIndex)方法,从原始字符串中截取出指定范围的字符子串。beginIndex表示截取的起始位置,endIndex表示结束位置(不包含)。2.使用StringUtils类可以使用ApacheCom...

Pattern.compile 的用法?正则表达式
首先,我们创建一个字符串`str = "10.2368686986859686"`,然后定义一个正则表达式模式`Pattern p = Pattern.compile("[\\\\d]*[\\\\.][\\\\d]{2}")`,它匹配小数点后保留两位小数的数字。接着,我们使用Matcher对象`m = p.matcher(str)`进行查找。在while循环中,如果匹配到子串,就使用`tmp = ...

java中怎么判断一个字符串中包含某个字符或字符串
contains(s1):如果s1是该字符串的子串,返回true。还有很多都是String的操作,如果是字符数组,只需循环一下下标,挨个比较就好。

正则表达式:匹配中间有特定字符串字符串
正则表达式是一种强大的文本处理工具,用于匹配字符串中的特定模式。在本文中,我们讨论了一个简单的正则表达式模式:^.*\\[2014\\].*$。这个模式的功能是,如果字符串中包含"[2014]"这一特定子串,那么该字符串就会被认为是匹配成功的。这里的中括号([])在正则表达式中是一个特殊字符,它通常用于字符...

java 正则表达提取字符串";\/w ;\/w INFORMATION EXTRACTION\/KW ;\/w...
Java正则表达式:(?<=^|\/KW)([\\\\s\\\\S]+?)\/KW 完整的Java程序如下:(你字符串中的;\/w我理解为空格或者tab字符,我用trim()函数去掉它)import java.util.regex.Matcher;import java.util.regex.Pattern;public class A { public static void main(String[] args) { String s=" INFORMATION...

Pattern.compile
这篇文章主要展示了如何在Java中使用Pattern.compile()方法进行正则表达式匹配。首先,它演示了如何创建一个Pattern对象,用于匹配字符串中的小数,保留两位小数,如"10.23"。接着,通过Matcher对象的find()方法查找并打印出所有符合条件的字符串。例如,对于输入的"10.23究同协整械68686986859686",会打印出...

怎么用Java把输入的两串字符串中的数字提取出来,并且将两串数字相乘输出...
解决方案:使用正则表达式抽取数字子串;使用Interger.parse将数字子串转为整数类型;计算两个数字相乘即可;

java字符串转数组
首先,定义一个正则表达式Pattern,用于匹配形如"{数字,数字,...}"的子串:Pattern p = Pattern.compile("\\\\{(\\\\d|\\\\d,)+\\\\}");接着,我们有一个字符串s,其内容为"{{1,2,3},{4,5,6},{7,8,9},{0},{0}}":String s = "{{1,2,3},{4,5,6},{7,8,9},{0},{0}}...

C#中如何计算一个字符串中某个指定字符的个数
使用Contains()方法判断是否存在需要查找的字符,从而进行个数统计。具体步骤如下:1、计算字符串中子串出现的次数的代码如下:2、执行方式,调用:3、执行结果:

相似回答