私はこのような文字列を持っていますJava文字列から行末文字を削除する
"hello
java
book"
文字列(hello \ r \ njava \ r \ nbook)から\ rと\ nを削除します。私は文字列を "hellojavabook"としたい。これどうやってするの?
私はこのような文字列を持っていますJava文字列から行末文字を削除する
"hello
java
book"
文字列(hello \ r \ njava \ r \ nbook)から\ rと\ nを削除します。私は文字列を "hellojavabook"としたい。これどうやってするの?
:
str = str.replaceAll("\\\\r","")
str = str.replaceAll("\\\\n","")
あなたは、空の文字列で\ nまたは\ rのいずれかの発生を置き換えるためにreplaceAllメソッドを使用してみましたか?
regex with replaceAll。
str = str.replaceAll("\\r\\n", "");
ハードコーディングされたラインブレーカの代わりに、 'System.getProperty(" line.separator ");'を使用することをお勧めします。各OSにはそれぞれ独自の行区切り文字があります。 – GGrec
私もそうだけど、質問は特に\ rと\ nを使った。 – TofuBeer
@GGrecテキストString/Fileが同じOSで作られていないことがある。したがって、 'System.getProperty(" line.separator ");'はこれらの場合は機能しません。しかし、同じOSの起源を信頼できる場合は、システムプロパティを使用する方がよいでしょう。 – Mindwin
あなたが避けたい場合は:あなたが唯一の彼らはペアである場合、\ rをする\ nを削除する場合
public class Main
{
public static void main(final String[] argv)
{
String str;
str = "hello\r\njava\r\nbook";
str = str.replaceAll("(\\r|\\n)", "");
System.out.println(str);
}
}
代わりにこれを行う(上記のコードは、\ rのか\ nのいずれかが削除されます)正規表現、またはそれ以前のJVM、String.replaceを(ターゲット必要があります)を行います。
str=str.replace("\r","").replace("\n","");
をそしてCRLFペアを削除するには:
str=str.replace("\r\n","");
後者は、同じことをするための正規表現を構築するよりも効率的です。しかし、文字列は一度だけ解析されるので、前者は正規表現として高速になると思います。
static byte[] discardWhitespace(byte[] data) {
byte groomedData[] = new byte[data.length];
int bytesCopied = 0;
for (int i = 0; i < data.length; i++) {
switch (data[i]) {
case (byte) '\n' :
case (byte) '\r' :
break;
default:
groomedData[bytesCopied++] = data[i];
}
}
byte packedData[] = new byte[bytesCopied];
System.arraycopy(groomedData, 0, packedData, 0, bytesCopied);
return packedData;
}
コードはcommons-codec projectにあります。
あなたがこれはすべての主要な文字列にスペースながら傾いてトリミングすることを意図するstring.trim();
を
てみました。お役に立てれば。
編集:(私は十分に明示的ではなかった)
だから、あなたのstring.Split()、あなたは[]の文字列になります - 配列内の文字列ごとに、string.trimを行います( )、それを追加します。
String[] tokens = yourString.split(" ");
StringBuffer buff = new StringBuffer();
for (String token : tokens)
{
buff.append(token.trim());
}
同じ文字列での追加ではなく、stringBuffer/Builderを使用します。
何が問題なのですか?トリムはすべてを取り除き、文字列だけを返しますか? –
トリムは、先頭/末尾の空白を削除します。文字列の途中の改行は削除されません。 – Joseph
public static void main(final String[] argv)
{
String str;
str = "hello\r\n\tjava\r\nbook";
str = str.replaceAll("(\\r|\\n|\\t)", "");
System.out.println(str);
}
正規表現にも表を追加すると便利です。
Zounds。私にそれを打つ! –
これは不必要に非効率的な方法です。 –