-1

我想做的是创建一个方法,它有一个字符串和一个字符作为参数,然后该方法获取字符串并搜索给定的字符。如果字符串包含该字符,它会返回一个整数数组,其中包含该字符出现的位置。这是我到目前为止所拥有的:

public class Sheet {
public static void main(String[] args) {
    String string = "bbnnbb";
    String complete = null;
    //*******
    for(int i = 0; i < string.length(); i++){
        complete = StringSearch(string,'n').toString();
    }
            //********
}

public static int[] StringSearch(String string, char lookfor) {
    int[]num = new int[string.length()];
    for(int i = 0; i < num.length; i++){
        if(string.charAt(i)== lookfor){
            num[i] = i;
        }
    }
    return num;
}

}

该方法工作正常,并返回:

0
0
2
3
0
0

我想要做的是把它们变成 1 个字符串,所以它看起来像这样“002300”。有什么可能的方法吗?我曾尝试在代码的加星标区域执行此操作,但没有成功。

4

4 回答 4

5

做就是了

StringBuffer strBuff = new StringBuffer();
for(int i = 0; i<str.length(); i++)
{
    if(str.charAt(i) == reqChar)
    {
        strBuff.append(str.charAt(i));
    }
    else
    {
        strBuff.append('0');
    }
}
return str.toString();
于 2012-04-06T21:01:02.410 回答
1

+=只需使用运算符将​​结果添加到现有字符串

String complete = "";
for(...)
    complete += StringSearch(string,'n').toString();
于 2012-04-06T20:59:39.523 回答
1

更新StringBuilder为更好的做法。

public static String StringSearch(String string, char lookfor) {
    StringBuilder sb = new StringBuilder();

    for(int i = 0; i < string.length; i++){
        if(string.charAt(i) == lookfor)
            sb.append(i);
        else
            sb.append("0");
    }
    return sb.toString();
}

然后你可以只调用一次,而不需要 for 循环。不知道为什么要为字符串中的每个字符调用它。

complete = StringSearch(string,'n');
于 2012-04-06T21:03:41.093 回答
1

我只会使用 java 的正则表达式库,这样它会更灵活(例如,如果您想查找的不仅仅是单个字符)。另外,它是高度优化的。

StringBuilder positions = "";

Pattern pattern = Pattern.compile(string);
Matcher matcher = pattern.matcher(lookfor);
while(matcher.find()){
    positions.append(matcher.start());
}

return positions;
于 2012-04-06T21:06:57.163 回答