删除字符串中的前导和尾随括号。

3
在Java中,我想要去掉字符串中开头和结尾的方括号。
给定输入:
"[ hello, char[]={a,b,c} ... bye ]"

我该如何生成以下输出:

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

只有前导[和尾随]被移除... 我该如何在Java中实现?

6个回答

17
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 

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

如果你确定它总是被括号包围,那么这很简单。 - Identity1

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

如果有前导和/或尾随空格:

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

非常有帮助,您能解释一下为什么使用了两个转义字符(/)吗? - Sashi Kant
@SashiKant,Java 只有在你在字符前面加上两个 \ 才能识别该转义模式。 - Arthur Melo

3

事实上,substring(startIndex, endIndex)的过载方法;

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

如果你想要去除开头和结尾的空格,可以使用trim()方法。


2

看一下String.substring()方法:

System.out.println(input.substring(1, input.length() - 1))

因为他似乎知道字符串的确切长度,所以他可以从1到23进行子字符串截取。 - Sterling Duchess
1
是的,但是原则上,人们永远不知道字符串的长度会有多长。最好使用您所知道的(字符串的前面),然后让Java报告其余部分(字符串的结尾)。 - Makoto

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

这就是了,我读错了。


4
那个替换了内部括号,这不是本意。 - Makoto

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接