私はプログラミング割り当てを持っています、そしてそれの一部は私がユーザーから行を読み、その行内のすべての空白を取り除くコードを作ることを要求します。行は1つ以上のWordで構成できます。
私がこのプログラムでやろうとしていたのは、スペースを見つけるまで各文字を分析してから、そのサブストリングを最初のトークンとして保存することです。その後、トークンがなくなるまで、または行末に達するまで再度ループします。
私はそれをコンパイルしようとするとき私はこれを得続けます:
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
ではなくメソッドsubstr
を持っています、それはあなたのプログラムのエラーです。
さらに、正規表現の使用に問題がなければ、これを1行で実行できます。
a.replaceAll("\\s+","");
これに正規表現を使用しないのはなぜですか。
a = a.replaceAll("\\s","");
正規表現のコンテキストでは、\s
はスペース文字(スペース、タブ文字などを含む)をすべて削除します。正規表現が\\s
に変わるように、Javaでバックスラッシュをエスケープする必要があります。また、は文字列が不変であるため、正規表現の戻り値をa
に代入することが重要です。
literals
またはregular expressions
を使用せずにこれを行う最も直感的な方法:
yourString.replaceAll(" ","");
String内のすべてのスペースを空の文字に置き換えます。
String lineWithoutSpaces = line.replaceAll("\\s+","");
これを試して:
String str = "Your string with spaces";
str = str.replace(" " , "");
試してください:
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;
}
これは、文字列からスペースを削除するための最も簡単で直接的な方法です。
あなたは単にString.replace( ""、 "")を使用することができます。
空白を削除するために正規表現を使うことができます。そのスニペットを試してください:
Scanner scan = new Scanner(System.in);
System.out.println(scan.nextLine().replaceAll(" ", ""));
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(" "," ");
//どんなスペースでもうまくいく
*文字列bのスペースを忘れないでください