今天心血来潮想了一种本办法算字符串里的“java”出现过多少次过程如下:
public class getjavanum{
public static void main(String[] args){
String s = "sunjavaapplejavapublicjavaoraclejava";
int countNum = 0;
for(int i=0 ;i<s.length()-3 ;i++){
if("j".equals(s.charAt(i)) && "a".equals(s.charAt(i + 1)) && "v".equals(s.charAt(i + 2)) && "a".equals(s.charAt(i + 3))){
countNum ++;
}
}
System.out.println("java出现了" + countNum + "次");
}
}
虽说是笨办法,但是本人还是觉得可以得出正解的,但事实相反,始终都是“java出现了0次”的蛋疼结果,求高人指点
public class getjavanum{
public static void main(String[] args){
String s = "sunjavaapplejavapublicjavaoraclejava";
int countNum = 0;
for(int i=0 ;i<s.length()-3 ;i++){
if("j".equals(s.charAt(i)) && "a".equals(s.charAt(i + 1)) && "v".equals(s.charAt(i + 2)) && "a".equals(s.charAt(i + 3))){
countNum ++;
}
}
System.out.println("java出现了" + countNum + "次");
}
}
虽说是笨办法,但是本人还是觉得可以得出正解的,但事实相反,始终都是“java出现了0次”的蛋疼结果,求高人指点
public static void main(String[] args) {
String s = "sunjavaapplejavapublicjavaoraclejava";
int countNum = 0;
for (int i = 0; i < s.length() - 3; i++) {
if ('j' == s.charAt(i) && 'a' == s.charAt(i + 1)
&& 'v' == s.charAt(i + 2) && 'a' == s.charAt(i + 3)) {
countNum++;
}
}
System.out.println("java出现了" + countNum + "次");
}
}
if ('j' == s.charAt(i) ... so on
public static void main(String[] args) {
String s = "sunjavaapplejavapublicjavaoraclejava";
String[] len = aa.split("java"); System.out.println("java出现了" + len.length + "次");
}
}
Java codepublic class Test {
public static void main(String[] args) {
String s = "sunjavaapplejavapublicjavaoraclejava";
String[] len = s.split("java"); System.out.println("java出现了" + len.length + "次");
}
}
String[] len = s.split("java"); System.out.println("java出现了" + len.length + "次");java出现了5次
public class Test { static final String SOURCE_STRING_01 = "sunjavaapplejavapublicjavaoraclejavaa";
static final String SOURCE_STRING_02 = "java";
static final String SOURCE_STRING_03 = null;
static final String VALUE_STRING = "java";
public static void main(String[] args) {
System.out.println(getCount(SOURCE_STRING_01, VALUE_STRING));
System.out.println(getCount(SOURCE_STRING_02, VALUE_STRING));
System.out.println(getCount(SOURCE_STRING_03, VALUE_STRING));
} static int getCount(String source, String value) {
if (source == null || !source.contains(value)) {
return 0;
} else {
source = " " + source + " ";//避免首尾出现value字符串造成错误
String[] lens = source.split(value);
//这里要减1,因为lens.length是分割后字符串数组的长度,分割符的数量=数组长度减1
return lens.length - 1;
}
}
}
也可以安装下面的写:
public static void main(String args[])
{
String s = "sunjavaapplejavapublicjavaoraclejava";
int countNum = 0;
for(int i=0 ;i<s.length()-3 ;i++){
if("j".equals(s.substring(i, i+1)) && "a".equals(s.substring(i+1, i+2)) && "v".equals(s.substring(i+2, i+3)) && "a".equals(s.substring(i+3, i+4))){
countNum ++;
}
}
System.out.println("java出现了" + countNum + "次");
}
但是一定比for运行要快些
但是一定比for运行要快些
//这样会不会更简单呢
System.out.println(s.split("java",-1).length-1);
String java ="java";
System.out.println((test.length()-test.replace(java,"").length())/java.length());
charAt返回的char类型,不可能跟string相等的虽然这样是对的,我想楼主也知道这方法有点不效率了
if (subStr.length() > str.length()) {
return 0;
} int count = 0;
for (int i = 0; i < str.length() - subStr.length() + 1; i++) {
if(str.charAt(i) == subStr.charAt(0)) {
boolean match = true;
for(int j = 1; j<subStr.length(); j++) {
if(str.charAt(i+j) != subStr.charAt(j)){
match = false;
break;
}
}
if(match){
count++;
i += subStr.length();
}
}
} return count;
}
public static void main(String[] args){
String s = "sunjavaapplejavapublicjavaoraclejava";
int countNum = 0;
for(int i=0 ;i<s.length()-3 ;i++){
if("j".equals((String.valueOf(s.charAt(i)))) && "a".equals(String.valueOf(s.charAt(i + 1))) && "v".equals(String.valueOf(s.charAt(i + 2))) && "a".equals(String.valueOf((s.charAt(i + 3))))){
countNum ++;
}
}
System.out.println("java出现了" + countNum + "次");
}
}
String s = "sunjavaapplejavapublicjavaoraclejava";
Pattern p = Pattern.compile("java");
Matcher m = p.matcher(s);
int count = 0;
while(m.find()) count++;
System.out.println(count);
}