2011-12-26 131 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 2011-12-26 19:50:02

2

看看在String.substring()方法:

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

因为他似乎知道字符串的确切长度,所以他可以从1到23说,并且像那样子字符串。 – 2011-12-26 19:54:28

+1

是的,但是......原则上,人们永远不会知道弦会持续多久。最好使用你知道的(字符串的前面),然后让Java报告其余部分(字符串的末尾)。 – Makoto 2011-12-26 19:55:38

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 2015-12-07 13:22:38

3

逸岸,

这个子字符串的重载(startIndex,endIndex);

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

此外,如果你想删除的开头和结尾的空格,使用TRIM();

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

非常有用,你能解释为什么你使用两个转义字符(/)? – 2014-12-30 14:23:49

+0

@SashiKant,如果你在字符前面放两个\\,java只会识别那个转义模式 – 2017-01-02 15:42:29

相关问题