我有一个编程任务,其中一部分需要我创建从用户读取一行的代码并删除该行中的所有空白区域。 该行可以包含一个或多个单词。
我试图对这个程序做的是让它分析每个字符,直到它找到一个空格,然后将该子字符串保存为第一个标记。然后再次循环,直到它不再有令牌或行尾。
当我尝试编译它时,我继续这样做:
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。
答案 0 :(得分:183)
java.lang.String
类的方法substring
不是substr
,这就是程序中的错误。
此外,如果您可以使用正则表达式,则可以在一行中执行此操作。
a.replaceAll("\\s+","");
答案 1 :(得分:54)
为什么不使用正则表达式?
a = a.replaceAll("\\s","");
在正则表达式的上下文中,\s
将删除任何空格字符(包括空格,制表符等)。您需要在Java中转义反斜杠,以便正则表达式变为\\s
。此外,因为字符串是不可变的,所以将正则表达式的返回值分配给 a
非常重要。
答案 2 :(得分:43)
最直观的方法是在不使用literals
或regular expressions
的情况下执行此操作:
yourString.replaceAll(" ","");
答案 3 :(得分:21)
用空字符替换String中的所有空格。
String lineWithoutSpaces = line.replaceAll("\\s+","");
答案 4 :(得分:12)
试试这个:
String str = "Your string with spaces";
str = str.replace(" " , "");
答案 5 :(得分:11)
尝试:
string output = YourString.replaceAll("\\s","")
s - 表示空格字符(制表符等)
答案 6 :(得分:6)
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);
}
}
答案 7 :(得分:4)
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;
}
这是从String中删除空格的最简单,最直接的方法。
答案 8 :(得分:3)
你不能只使用String.replace(“”,“”);
答案 9 :(得分:2)
您可以使用正则表达式删除空格,尝试使用该代码段:
Scanner scan = new Scanner(System.in);
System.out.println(scan.nextLine().replaceAll(" ", ""));
答案 10 :(得分:1)
trim.java:30: cannot find symbol
symbol : method substr(int,int)
location: class java.lang.String
b = a.substr(i,160) ;
String类中没有类似substr
的方法。
使用String.substring()方法。
答案 11 :(得分:0)
String a="string with multi spaces ";
//or this
String b= a.replaceAll("\\s+"," ");
String c= a.replace(" "," ").replace(" "," ").replace(" "," ").replace(" "," ").replace(" "," ");
//它适用于任何空格
*不要忘记刺痛中的空间
答案 12 :(得分:-2)
boolean flag = true;
while(flag) {
s = s.replaceAll(" ", "");
if (!s.contains(" "))
flag = false;
}
return s;
答案 13 :(得分:-9)
String a="string with multi spaces ";
String b= a.replace(" "," ").replace(" "," ").replace(" "," ").replace(" "," ").replace(" "," ");
//它适用于任何空格