List 8 ways to remove the string prefix "space" as follows
Need to import junit-4..11 and hamcrest-core-1.3 jar
/**
* 目标:去除string类型的前缀空格
* 示例:
* string=" select * from zevin" ==> string="select * from zevin"
*/
public class Test {
/**
* 方法一:trim()
* 逻辑:略
* 最优时间:7000左右
*/
@Test
public void test1(){
String sql=" select * from zevin";
// String sql=" select * from zevin";
long l = System.nanoTime();
//————————————————————————————————————————————————————
sql=sql.trim();
//————————————————————————————————————————————————————
System.out.println(System.nanoTime()-l);
System.out.println(sql);
}
/**
* 方法二:计数器+String.codePointAt()+String.substring()
* 逻辑:1.使用计数器,对前缀"空格"进行计数统计
* 2.判断是否为"空格"则采用 String.codePointAt()
* 3.最后截取下标的后面字符串
* 最优时间:12000左右
*/
@Test
public void test2(){
String sql=" select * from zevin";
// String sql=" select * from zevin";
long l = System.nanoTime();
//————————————————————————————————————————————————————
//while形式
int i=0;
while (sql.codePointAt(i)==32){
i++;
}
sql=sql.substring(i,sql.length());
/* //for形式
for (int i = 0; i < sql.length(); i++) {
if(sql.codePointAt(i)!=32){
sql=sql.substring(i,sql.length());
break;
}
}*/
//————————————————————————————————————————————————————
System.out.println(System.nanoTime()-l);
System.out.println(sql);
}
/**
* 方法三:substring()逐步移除
* 逻辑:1.使用String.indexOf(),判断字符串的第一个位置是否为"空格"
* 2.如果为“空格”,则截取第一个字符(此时为"空格")的后面字符串
* 3.循环1-2步,直到第一位不是“空格”为止
* 最优时间:20000左右
*/
@Test
public void test3(){
String sql=" select * from zevin";
// String sql=" select * from zevin";
long l = System.nanoTime();
//————————————————————————————————————————————————————
while (sql.indexOf(" ")==0){
sql=sql.substring(1, sql.length());
}
//————————————————————————————————————————————————————
System.out.println(System.nanoTime()-l);
System.out.println(sql);
}
/**
* 方法四:计数器+转换char数组+String.substring()
* 逻辑:1.使用toCharArray()分割原字符串,得到新的char数组
* 2.使用计数器,对前缀"空格"进行计数统计
* 3.判断是否为"空格"则采用 “chars[i]==32”
* 4.最后截取下标的后面字符串
* 最优时间:8000左右
*/
@Test
public void test4(){
String sql=" select * from zevin";
// String sql=" select * from zevin";
long l = System.nanoTime();
//————————————————————————————————————————————————————
char[] chars = sql.toCharArray();
//while形式
int i=0;
while (chars[i]==32){
i++;
}
sql=sql.substring(i,sql.length());
/* //for形式
for (int i = 0; i < chars.length; i++) {
if(chars[i]!=32){
sql=sql.substring(i,sql.length());
break;
}
}*/
//————————————————————————————————————————————————————
System.out.println(System.nanoTime()-l);
System.out.println(sql);
}
/**
* 方法五:计数器+转换byte数组+String.substring()
* 逻辑:1.使用getBytes()分割原字符串,得到新的byte数组
* 2.使用计数器,对前缀"空格"进行计数统计
* 3.判断是否为"空格"则采用 “bytes[i]==32”
* 4.最后截取下标的后面字符串
* 最优时间:11000左右
*/
@Test
public void test5(){
String sql=" select * from zevin";
// String sql=" select * from zevin";
long l = System.nanoTime();
//————————————————————————————————————————————————————
byte[] bytes = sql.getBytes();
//while形式
/* int i=0;
while (bytes[i]==32){
i++;
}
sql=sql.substring(i,sql.length());*/
//for形式
for (int i = 0; i < bytes.length; i++) {
if(bytes[i]!=32){
sql=sql.substring(i,sql.length());
break;
}
}
//————————————————————————————————————————————————————
System.out.println(System.nanoTime()-l);
System.out.println(sql);
}
/**
* 方法六:split()+转换string[]数组+String.substring()
* 逻辑:1.使用split()分割原字符串,得到新的字符串数组
* 2.使用计数器,对前缀"空格"进行计数统计
* 2.判断是否为"空格"则采用 "".equals(strings[i])
* 4.最后截取下标的后面字符串
* 最优时间:60000左右
*/
@Test
public void test6(){
String sql=" select * from zevin";
// String sql=" select * from zevin";
long l = System.nanoTime();
//————————————————————————————————————————————————————
String[] strings = sql.split(" ");
//while形式
int i=0;
while ("".equals(strings[i])){
i++;
}
sql=sql.substring(i,sql.length());
//for形式
/* for (int i = 0; i < strings.length; i++) {
if(!"".equals(strings[i])){
sql=sql.substring(i,sql.length());
break;
}
}*/
//————————————————————————————————————————————————————
System.out.println(System.nanoTime()-l);
System.out.println(sql);
}
/**
* 方法七:charAt()
* 逻辑:略
* 最优时间:7000左右
*/
@Test
public void test7(){
String sql=" select * from zevin";
// String sql=" select * from zevin";
long l = System.nanoTime();
//————————————————————————————————————————————————————
int i=0;
while (sql.charAt(i)==32){
i++;
}
sql=sql.substring(i,sql.length());
//————————————————————————————————————————————————————
System.out.println(System.nanoTime()-l);
System.out.println(sql);
}
/**
* 方法八:replaceAll()+正则表达式
* 逻辑:略
* 最优时间:50000左右
*/
@Test
public void test8(){
String sql=" select * from zevin";
// String sql=" select * from zevin";
long l = System.nanoTime();
//————————————————————————————————————————————————————
sql=sql.replaceAll("^[ ]+", "");
//————————————————————————————————————————————————————
System.out.println(System.nanoTime()-l);
System.out.println(sql);
}
}