Java 给出一个单词之间有多个空格的句子。去掉多余的空格,这样句子的单词之间就只有一个空格了
问题很清楚。代码应该是Java的,不使用正则表达式,以防有人没有注意到,这不是重复的,我想知道一种不用正则表达式的方法Java 给出一个单词之间有多个空格的句子。去掉多余的空格,这样句子的单词之间就只有一个空格了,java,string,whitespace,space,Java,String,Whitespace,Space,问题很清楚。代码应该是Java的,不使用正则表达式,以防有人没有注意到,这不是重复的,我想知道一种不用正则表达式的方法 input: This is a string with more than one space between words. output: This is a string with more than one space between words. 还有比这样做更好的方法吗 public static String delSpaces(String s
input: This is a string with more than one space between words.
output: This is a string with more than one space between words.
还有比这样做更好的方法吗
public static String delSpaces(String str){
StringBuilder sb = new StringBuilder(str);
ArrayList<Integer> spaceIndexes = new ArrayList<>();
for ( int i=0; i < sb.length(); i++ ){
if ( sb.charAt(i) == ' ' && sb.charAt(i-1) == ' '){
spaceIndexes.add(i);
}
}
for (int i = 0; i < spaceIndexes.size(); i++){
sb.deleteCharAt(spaceIndexes.get(i)-i);
}
return new String(sb.toString());
}
使用str.replaceAll\\s+,;//使用正则表达式的最简单方法
第二种方式:
public static String delSpaces(String str){ //custom method to remove multiple space
StringBuilder sb=new StringBuilder();
for(String s: str.split(" ")){
if(!s.equals("")) // ignore space
sb.append(s+" "); // add word with 1 space
}
return new String(sb.toString());
}
第三种方式:
public static String delSpaces(String str){
int space=0;
StringBuilder sb=new StringBuilder();
for(int i=0;i<str.length();i++){
if(str.charAt(i)!=' '){
sb.append(str.charAt(i)); // add character
space=0;
}else{
space++;
if(space==1){ // add 1st space
sb.append(" ");
}
}
}
return new String(sb.toString());
}
使用str.replaceAll\\s+,;//使用正则表达式的最简单方法
第二种方式:
public static String delSpaces(String str){ //custom method to remove multiple space
StringBuilder sb=new StringBuilder();
for(String s: str.split(" ")){
if(!s.equals("")) // ignore space
sb.append(s+" "); // add word with 1 space
}
return new String(sb.toString());
}
第三种方式:
public static String delSpaces(String str){
int space=0;
StringBuilder sb=new StringBuilder();
for(int i=0;i<str.length();i++){
if(str.charAt(i)!=' '){
sb.append(str.charAt(i)); // add character
space=0;
}else{
space++;
if(space==1){ // add 1st space
sb.append(" ");
}
}
}
return new String(sb.toString());
}
str=str.replaceAll\\s+;用正则表达式就可以了。这比您必须将方法写入dos要快得多。str=str.replaceAll\\s+;用正则表达式就可以了。这比您必须将方法写入dos要快得多
class Try
{
public static void main(String args[])
{
String str = "This is a string with more than one space between words.";
char[] c = str.toCharArray();
String str1 = "";
for(int i = 0;i<str.length()-1;i++)
{
if((c[i] == ' '&& c[i+1] != ' ') || (c[i] != ' '))
str1 += c[i];
}
System.out.println(str1);
}
}
这很容易做到
这很容易做到 Rustam,StringBuilder没有用于字符串的replaceAll方法。而replaceAll使用Regex,我不希望这样。无论如何,谢谢。我看到你的str是String而不是StringBuilder。是的,但它是方法参数,你不希望有人将StringBuilder作为参数传递,我用字符串在方法内实例化了一个SB对象。@oudouz check updatedcode@oudouz希望第二个答案就是你想要的Rustam,StringBuilder没有用于字符串的replaceAll方法。而replaceAll使用Regex,我不希望这样。无论如何,谢谢。我看到你的str是String而不是StringBuilder。是的,但它是方法参数,你不希望有人将StringBuilder作为参数传递,我用字符串在方法内实例化了一个SB对象。@oudouz check updatedcode@oudouz希望第二个答案就是你想要的。我知道它更快,但我需要一个算法。我想写我自己的方法。我知道它更快,但我想要一个算法。我想编写自己的方法。String.replaceAll使用正则表达式作为第一个参数prakar.oudouz,可能是这样help@Prakhar避免在循环内向字符串变量添加字符,因为每次都会创建新字符串。最好使用StringBuilder或StringBufferyeah true。。感谢yString.replaceAll使用regex作为第一个参数prakar.oudouz,可能是这样help@Prakhar避免在循环内向字符串变量添加字符,因为每次都会创建新字符串。最好使用StringBuilder或StringBufferyeah true。。谢谢你