2011-12-26 15 views
2

Javaでは、文字列内の先頭と末尾の括弧を取り除きたいと思います。入力が与えられ
文字列内の先頭と末尾の括弧を削除します。

"[ hello, char[]={a,b,c} ... bye ]" 

私は

" hello, char[]={a,b,c} ... bye " 

の出力のみ[先頭と末尾の]を生成することができますどのように私はJavaでそれを行うことができますどのように...削除されますか?

答えて

16
String i = "[ hello, char[]={a,b,c} ... bye ]"; 

int indexOfOpenBracket = i.indexOf("["); 
int indexOfLastBracket = i.lastIndexOf("]"); 

System.out.println(i.substring(indexOfOpenBracket+1, indexOfLastBracket)); 

プリント:

hello, char[]={a,b,c} ... bye 
0
String a = "[ hello, char[]={a,b,c} ... bye ] "; 
a.substring(1,23); 
System.out.println(a); 

ここで私は読んでいない。

+4

意図したものではないインナーブラケットに代わります。 – Makoto

2

String.substring()方法を見てみましょう:

System.out.println(input.substring(1, input.length())) 
+0

彼は文字列の正確な長さを知っているようだから、1から23までと言うことができ、それを部分文字列で表すことができます。 –

+1

はい、しかし...原則として、文字列の長さは決してわかりません。あなたが知っているもの(文字列の先頭がどこにあるか)を使用し、Javaが残りの部分(文字列の終わりがどこにあるか)を報告するようにする方が良いでしょう。 – Makoto

7
public class Test{ 
    public static void main(String[] args){ 
     String test = "[ abc ]"; 
     System.out.println(test.substring(1,test.length()-1)); 
     // Outputs " abc " 
    } 
} 
+0

括弧でくくられていることがわかっているのなら、これはかなりシンプルです – Identity1

3

Infactは、

この部分文字列のオーバーロード(startIndex、endIndex);

input.substring(input.indexOf("[")+1,input.lastIndexOf("]"));

あなたが最初と末尾のスペースを削除したい場合にも、使用することは、(トリム)。主要および/または空白文字を末尾有する場合に

3
String s = "[ hello, char[]={a,b,c} ... bye ]"; 
s = s.replaceAll("^\\[|\\]$", ""); 

String s = " [ hello, char[]={a,b,c} ... bye ] "; 
s = s.trim().replaceAll("^\\[|\\]$", ""); 
+0

非常に参考になります。どうして2つのエスケープ文字(/)を使用したのですか? –

+0

@SashiKantは、文字の前に\\を2つ入れると、そのエスケープモードのみを認識します –