Ответ 1
java.lang.String
класс имеет метод substring
not substr
, то есть ошибка в вашей программе.
Кроме того, вы можете сделать это в одной строке, если вы используете регулярное выражение.
a.replaceAll("\\s+","");
У меня есть назначение программирования, и часть его требует от меня сделать код, который читает строку от пользователя и удаляет все пробелы внутри этой строки. строка может состоять из одного или нескольких слов.
То, что я пытаюсь сделать с этой программой, - это проанализировать каждый символ, пока не найдет пробел, а затем сохранит эту подстроку в качестве первого токена. затем повторите цикл, пока не достигнет больше токенов или конца строки.
Я продолжаю получать это, когда пытаюсь его скомпилировать:
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.
java.lang.String
класс имеет метод substring
not substr
, то есть ошибка в вашей программе.
Кроме того, вы можете сделать это в одной строке, если вы используете регулярное выражение.
a.replaceAll("\\s+","");
Почему бы не использовать регулярное выражение для этого?
a = a.replaceAll("\\s","");
В контексте регулярного выражения \s
удаляет все, что является символом пробела (включая пробел, символы табуляции и т.д.). Вам нужно избегать обратной косой черты в Java, поэтому регулярное выражение превращается в \\s
. Кроме того, , поскольку строки являются неизменяемыми, важно, чтобы вы возвращали возвращаемое значение регулярного выражения в a
.
Замените все пробелы в String пустым символом.
String lineWithoutSpaces = line.replaceAll("\\s+","");
Самый интуитивный способ сделать это без использования literals
или regular expressions
:
yourString.replaceAll(" ","");
Попробуйте следующее:
String str = "Your string with spaces";
str = str.replace(" " , "");
Try:
string output = YourString.replaceAll("\\s","")
s - указывает символ пробела (символы табуляции и т.д.)
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);
}
}
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;
}
Это самый простой и самый прямой метод удаления пробелов из строки.
Вы можете использовать регулярное выражение для удаления пробелов, попробуйте этот фрагмент:
Scanner scan = new Scanner(System.in);
System.out.println(scan.nextLine().replaceAll(" ", ""));
Нельзя использовать String.replace( "," ");
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().
String a="string with multi spaces ";
//or this
String b= a.replaceAll("\\s+"," ");
String c= a.replace(" "," ").replace(" "," ").replace(" "," ").replace(" "," ").replace(" "," ");
//он отлично работает с любыми пробелами
* не забывайте пробел в sting b
boolean flag = true;
while(flag) {
s = s.replaceAll(" ", "");
if (!s.contains(" "))
flag = false;
}
return s;
String a="string with multi spaces ";
String b= a.replace(" "," ").replace(" "," ").replace(" "," ").replace(" "," ").replace(" "," ");
//он отлично работает с любыми пробелами