我有一个编程作业和部分它需要我做的代码,从用户读取一行并删除该行内的所有空白。 行可以由一个或多个字的。
我试图用这个程序做的是,直到它找到一个空格它分析每个字符,然后将该串保存为第一个标记。 然后再次循环,直到它到达没有更多标记或行的结尾。
我不断收到这个当我尝试编译:
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 1
at java.lang.String.charAt(String.java:694)
at trim.main(trim.java:23)
下面是代码
import java.util.Scanner ;
import java.lang.Character;
import java.lang.String ;
public class trim
{
public static void main (String[]args)
{
String a ;
String b ;
String c ;
char aChar ;
int i = 0 ;
Scanner scan = new Scanner(System.in);
a = scan.nextLine();
a =a.trim() ;
for ( ; i >= 0 ; i++ )
{
aChar = a.charAt(i) ;
if (aChar != 32)
{
a = a.substring(0,i+1);
}
else
{
b = a.substring(i,160) ;
b= b.trim();
c = c + a ;
c = c.trim() ;
a = b ;
i = 0 ;
}
if (b.equals(null))
{
i = -1 ;
}
}
}
}
更简单的方法来做到这一点就是欣赏,但我还是想获得这个项目的工作。
我不能输入使用哨兵。
谢谢大家所有帮助,
我会用更简单的方法,并且将读取的Javadoc。
Answer 1:
java.lang.String
类有方法, substring
不substr
,这就是错误的程序。
此外,你可以,如果你在使用正则表达式确定在一个单行做到这一点。
a.replaceAll("\\s+","");
Answer 2:
为什么不使用这个正则表达式?
a = a.replaceAll("\\s","");
在一个正则表达式的上下文中, \s
将删除任何是空格字符(包括空格,制表符字符等)。 你需要这样的正则表达式变成逃避Java中的反斜杠\\s
。 此外, 由于字符串是不可变这所分配的正则表达式的返回值是很重要的 a
。
Answer 3:
这样做,而无需使用的最直观的方式literals
或regular expressions
:
yourString.replaceAll(" ","");
Answer 4:
替换空字符字符串的所有空间。
String lineWithoutSpaces = line.replaceAll("\\s+","");
Answer 5:
试试这个:
String str = "Your string with spaces";
str = str.replace(" " , "");
Answer 6:
尝试:
string output = YourString.replaceAll("\\s","")
秒-表示空格字符(制表符等)
Answer 7:
package com.infy.test;
import java.util.Scanner ;
import java.lang.String ;
public class Test1 {
public static void main (String[]args)
{
String a =null;
Scanner scan = new Scanner(System.in);
System.out.println("*********White Space Remover Program************\n");
System.out.println("Enter your string\n");
a = scan.nextLine();
System.out.println("Input String is :\n"+a);
String b= a.replaceAll("\\s+","");
System.out.println("\nOutput String is :\n"+b);
}
}
Answer 8:
public static String removeSpace(String s) {
String withoutspaces = "";
for (int i = 0; i < s.length(); i++) {
if (s.charAt(i) != ' ')
withoutspaces += s.charAt(i);
}
return withoutspaces;
}
这是最简单,最直接的方法,从一个字符串中删除空格。
Answer 9:
不能你只需要使用与string.replace(””, “”);
Answer 10:
您可以使用正则表达式来删除空格,尝试片断:
Scanner scan = new Scanner(System.in);
System.out.println(scan.nextLine().replaceAll(" ", ""));
Answer 11:
trim.java:30: cannot find symbol
symbol : method substr(int,int)
location: class java.lang.String
b = a.substr(i,160) ;
有没有像法substr
在String类。
使用String.substring()方法。
Answer 12:
String a="string with multi spaces ";
//or this
String b= a.replaceAll("\\s+"," ");
String c= a.replace(" "," ").replace(" "," ").replace(" "," ").replace(" "," ").replace(" "," ");
//它做工精细任何空格
*不要忘记刺痛退格
Answer 13:
boolean flag = true;
while(flag) {
s = s.replaceAll(" ", "");
if (!s.contains(" "))
flag = false;
}
return s;
Answer 14:
String a="string with multi spaces ";
String b= a.replace(" "," ").replace(" "," ").replace(" "," ").replace(" "," ").replace(" "," ");
//它做工精细任何空格
文章来源: How to remove all white spaces in java [duplicate]