考虑以下字符串,我想以这种方式得到一个子字符串:
String str="abcdefghij"
返回了子串:
acegi
也就是说第一个字符串str的每两个字符。 然后用相同的推理,得到第一个字符串str的每三个字符的子字符串。
同样的问题,频率为f
这是我当前的方法,但实际上有一个错误:
private static String subString(String str,int freq){
String subStr=null;
for(int i = 0; i < str.length(); freq++){
subStr= subStr + str[i];
}
return subStr;
}
也许这些任务有一些已有的方法吗?
答案 0 :(得分:2)
我不知道有一个内置的方法来做到这一点。您可以使用StringBuilder来避免创建许多临时字符串,并使用正确的容量初始化它:
private static String subString(String str, int freq) {
//make it the right capacity to avoid reallocations
StringBuilder subStr = new StringBuilder(str.length() / freq + 1);
for (int i = 0; i < str.length(); i += freq) {
subStr.append(str.charAt(i));
}
return subStr.toString();
}
答案 1 :(得分:1)
您需要字符串中的每个freq
个字符。试试这个
String subStr="";
for(int i = 0; i < str.length(); i+=freq){
subStr= subStr + str.charAt(i);
}
编辑:更好的想法是使用StringBuilder,请参阅@asgoth的答案
答案 2 :(得分:1)
请迭代,使用StringBuilder!我见过像你这样的结构,炸毁了应用服务器。
private static String subString(String str,int freq){
StringBuilder out = new StringBuilder();
for(int i = 0; i < str.length(); i+=freq){
out.append(str.charAt(i));
}
return out.toString();
}
答案 3 :(得分:0)
private static subString(String str, int freq){
String subStr;
for(int i=0;i<str.length();i+=freq){
subStr=subStr+str.charAt(i);
}
return subStr;
}
以下是您的请求的方法。没有内置的。