将字符串转换为如下所示的字符串数组最快的方法是什么(由2个字符分隔):
字符串输入=“ 127856”;
String [] output = {“ 12”,“ 78”,“ 56”};
目前,我正在使用breakpoints
,但速度很慢:
for
答案 0 :(得分:1)
如果您不想使用正则表达式,则可以使用substring
,它比字符串连接要快得多:
public static String[] mySplit(String input){
int len = input.length(), index = 0;
// Arrays are faster than lists
String[] array = new String[len/2+len%2];
for (int i = 0; i < len-1; i+=2, index++) {
array[index]=input.substring(i,i+2);
}
// To handle strings with an odd number of characters
if(input.length()%2==1) {
array[index]=input.substring(input.length()-1);
}
return array;
}
答案 1 :(得分:1)
函数的输出数组应包含输入长度元素的一半(例如UPDATE
Master_Product
SET
ID_OrderReport = ID_OrderReport + 1
WHERE
ID_OrderReport>$NewitemOrderReport
为out.length
)。接下来,输出中的每个位置都以输出索引乘以2并结束于此位置而结束(但input.length() / 2
是排他性的)。我认为编写函数的“最快”方法就像
String.substring(int, int)
答案 2 :(得分:0)
您也可以使用正则表达式:
double b = Math.Pow(a, 1.0 / c);
正则表达式public static String[] mySplit(String input){
String[] output = input.split("(?<=\\G.{2})");
return output;
}
匹配一个空字符串,该字符串具有最后一个匹配((?<=\G...)
)后跟三个字符(\G
)之前(...
)
但是,时间复杂度是相同的。
答案 3 :(得分:0)
使用标准库通常是最好的解决方案。 java.lang.String
提供了方法String[] split(String regex)
。在正则表达式中,a。代表一个字符,您需要2个字符,因此正则表达式为..
public static String[] mySplit(String input){
String array[]=input.split("..");
return array;
}
由于未经测试,如果字符串中的字符数为奇数,我无法告诉您。
编辑:在未经测试的代码中,正则表达式是错误的。请无视我的回答。