public class DeleteExtraSpace {
/**
* 题目:给定字符串,删除开始和结尾处的空格,并将中间的多个连续的空格合并成一个。
* 方法1.用已有的String类的trim和replaceAll方法
* 方法2.全部用正则表达式,这个我不熟
* 方法3.“重新发明轮子”,从头遍历一次
*/
public static void main(String[] args) {
String[] strs={
"",
" ",
"a",
" hello world ",
};
for(String str:strs){
String str2=str.trim().replaceAll(" +", " ");
System.out.println(str2+",length2="+str2.length());
String str3=deleteExtraSpace(str);
System.out.println(str3+",length3="+str3.length());
System.out.println(str2.equals(str3));
System.out.println("=========================");
}
}
public static String deleteExtraSpace(String str){
if(str==null){
return null;
}
if(str.length()==0 || str.equals(" ")){
return new String();
}
char[] oldStr=str.toCharArray();
int len=str.length();
char[] tmpStr=new char[len];
boolean keepSpace=false;
int j=0;//the index of new string
for(int i=0;i<len;i++){
char tmpChar=oldStr[i];
if(oldStr[i]!=' '){
tmpStr[j++]=tmpChar;
keepSpace=true;
}else if(keepSpace){
tmpStr[j++]=tmpChar;
keepSpace=false;
}
}
//unlike c/c++,no "\0" at the end of a string. So,do the copy again...
int newLen=j;
if(tmpStr[j-1]==' '){
newLen--;
}
char[] newStr=new char[newLen];
for(int i=0;i<newLen;i++){
newStr[i]=tmpStr[i];
}
return new String(newStr);
}
}
分享到:
相关推荐
给定字符串,删除开始和结尾处的空格,并将中间的多个连续的空格合并成一个。 //比如 “ I like http://hi.baidu.com/mianshiti ” 会变成 "I like http://hi.baidu.com/mianshiti"。
java编程统计一个字符串中的字母,数字,空格,其他,输入一个字符串,就会输出字符串中包含的字母,数字,空格,其他
动态规划算法:从1到26分别对应a-z的每一个字母,输入一串数字的字符串,转换为字母,输出所有可能的字母序列。...从字符串的头部开始,每次可以取一个或者两个数字进行转换,向左为取一个,向右取两个,,,,
给定字符串J 代表石头中宝石的类型,和字符串 S代表你拥有的石头。 S 中每个字符代表了一种你拥有的石头的类型,你想知道你拥有的石头中有多少是宝石。 J 中的字母不重复,J 和 S中的所有字符都是字母。...
设A 和B 是2 个字符串。要用最少的字符操作将字符串A 转换为字符串B。这里所说的字符操作包括 (1)删除一个字符; (2)插入一个字符; (3)将一个字符改为另一个字符。 将字符串A变换为字符串B 所用的最少字符操作...
例如,给定字符串"Your name is {{name}}"和键值对对象{"name": "Johnny"},它应该返回"Your name is Johnny"。 双花括号和变量名之间的空格/制表符将被忽略。例如,“My name is {{name}}”、“My name is {{name}...
对于给定的字符串A和B,试设计一个算法,计算其扩展距离。 ?编程任务: 对于给定的字符串A和B,编程计算其扩展距离。 Input 由文件input.txt给出输入数据。第1 行是字符串A;第2 行是字符串B。第3行是空格 与...
输入一个字符串,统计出这个字符串的英文大写字母、小写字母、数字、空格以及其它字符的个数
编写程序:从键盘上输入一个包含10个字符的字符串,把该字符串与程序中给定的字符串("bacdbcabca") //依次比较,统计两个字符串对应字符相等的数目。然后输出从键盘上输入的字符串, //并把两个字符串中对应字符不...
编写一个类,该类的功能是可以根据给定的字符串(字符串中单词之间有空格)和子串,计算出字符串中包含多少个子串。(使用String类的方法。) 第三部分 编写一个类,该类的功能是可以根据给定的字符串(字符串中单词...
java基础编程:统计出给定字符串的英文字母、空格、数字和其它字符的个数
字符串循环左移 4/88 给定一个字符串S[0…N-1],要求把S的前k 个字符移动到S的尾部,如把字符串"abcdef" 前面的2个字符'a'、'b'移动到字符串的尾 部,得到新字符串"cdefab":即字符串循环 左移k。 多说一句:循环...
PFColorHash - 根据给定的字符串生成颜色
统计给定字符串在文本中出现的次数,如文本内容为asd asasdfg asd as zx67 asd mklo,给定字符串为as,则函数返回6。文本内容和给定字符串由命令行输入得到。
给定一个句子(只包含字母和空格), 将句子中的单词位置反转,单词用空格分割, 单词之间只有一个空格,前后没有空格。 比如: (1) “hello xiao mi”-> “mi xiao hello” 输入描述: 输入数据有多组,每组占一行...
C语言程序设计-求一个给定字符串中的字母的个数.c
统计给定文件中给定字符串的出现次数,java中的小功能
toffset 指从被调用方法的字符串的第几个字符开始测试,如果是0,表明从字符串的首字符开始。other是指使用的另一个字符串。ooffset指从另一个字符串的第几个字符开始。len指要比较几个字符。该方法返回boolean值。 ...
java字符串实验题目 java string类
4、 给定的字符串数组:strings s[] = {“string”,”starting”,”strong”,”street”,”stir”,”studeng”,”soft”,”sting”},编写应用程序,统计以”st”开头的字符串有多少个,以”ng”结尾的字符串有多少个...