如何删除字符串的第一个和最后一个字符?


78

我已经在SOAP消息中工作过,以从Web服务获取LoginToken,并将LoginToken存储在String中,并使用 System.out.println(LoginToken);打印。此打印[wdsd34svdf],但我只想wdsd34svdf,如何删除方括号。请任何人帮助我。

谢谢

例:

String LoginToken=getName().toString();
System.out.println("LoginToken" + LoginToken);

输出:[wdsd34svdf]我想要wdsd34svdf


11
这个问题表明没有任何研究工作
Dexygen

3
是的,但是现在对于懒散的程序员,他们向谷歌询问类似的东西还有一个复制粘贴的答案:)
tom

1
我不知道为什么这个问题有这么多的反对意见。
萨达·侯赛因

Answers:


177

这很容易,您需要先找到[和]的索引,然后再找到子字符串。(这里[总是在开始处,]在结尾处),

String loginToken = "[wdsd34svdf]";
System.out.println( loginToken.substring( 1, loginToken.length() - 1 ) );

1
我喜欢您的句子开头:“很简单” ... :)我想只要您知道所有内容就很容易..虽然有帮助
daniel_aren 2013年

8
这应该是loginToken.length()-2,以删除尾括号。
mga911

7
@ mga911正如我在回答中提到的那样,“ substring(beginIndex,endIndex)”参数应分别为“ 1”和“ loginToken.length()-1”([和]的索引)。第一个参数是包含的,第二个参数是排除的。上面的代码为我提供了正确的输出。
gtiwari333

(error.substring(2, error.length()-1))用来删除第一个和最后一个括号!
伊曼·马拉希


14

您可以随时使用substring

String loginToken = getName().toString();
loginToken = loginToken.substring(1, loginToken.length() - 1);

7

解决此问题的另一种方法是使用commons-lang(从2.0版开始)StringUtils.substringBetween(String str, String open, String close)方法。主要优点是它是零安全操作。

StringUtils.substringBetween("[wdsd34svdf]", "[", "]"); // returns wdsd34svdf


2
这将适用于该特定方案,但如果将“ [wdsd] 34svdf]”作为第一个参数传递,则将返回“ wdsd”。
izilotti 2014年

5

我也有类似的情况,我认为类似

str.replaceAll("\[|\]", "");

看起来更干净。当然,如果您的令牌中可能带有方括号,那将是行不通的。


1
请注意,只有replaceAll()和replaceFirst()支持正则表达式,因此这里str.replaceAll(“ \\ [| \\]”,“”); 将工作
rekinyz 2012年

1
正确的表达式类似于str = str.replaceAll(“ \ [| \]”,“”); 在您的表情中看到丢失的\\
2015年

1

这样,您可以删除1个前导“ [”和1个尾随“]”字符。如果您的字符串碰巧不是以“ [”开头或以“]结尾”,则不会删除任何内容:

str.replaceAll("^\\[|\\]$", "")

你测试过了吗?我可能是错的,但看起来像“字符串的开始,然后是[或]然后是字符串的结束”。我们这里不需要括号吗?
YakovL

1
是的,它工作得很好:@Test public void testReplace(){String str =“ [wdsd34svdf]”; str = str.replaceAll(“ ^ \ [| \] $”,“”); assertTrue(str.equals(“ wdsd34svdf”)); }
Andriy Fedotov

1

这是完美的工作

String str = "[wdsd34svdf]";
//String str1 = str.replace("[","").replace("]", "");
String str1 = str.replaceAll("[^a-zA-Z0-9]", "");
System.out.println(str1);


String strr = "[wdsd(340) svdf]";
String strr1 = str.replaceAll("[^a-zA-Z0-9]", "");
System.out.println(strr1);

我认为代码的最后一行旁边有一个错字。我想您是想说strr.replaceAll(...)而不是str.replaceAll(...) (用strr替换str
Sometowngeek '19

0

StringUtilsremoveStartremoveEnd方法有助于从字符串的开头和结尾删除字符串。

在这种情况下,我们也可以结合使用这两种方法

String string = "[wdsd34svdf]";
System.out.println(StringUtils.removeStart(StringUtils.removeEnd(string, "]"), "["));

0

解决方案1

def spaceMeOut(str1):

   print(str1[1:len(str1)-1])

str1 ='你好'

打印(spaceMeOut(str1))

解决方案2

def spaceMeOut(str1):

  res=str1[1:len(str1)-1]

  print('{}'.format(res))

str1 ='你好'

打印(spaceMeOut(str1))


1
请详细说明您的解决方案之间的差异以及OP为何使用其中一种。
圣保罗

0

在科特林

private fun removeLastChar(str: String?): String? {
    return if (str == null || str.isEmpty()) str else str.substring(0, str.length - 1)
}


-1

这会给你基本的想法

    String str="";
    String str1="";
    Scanner S=new Scanner(System.in);
    System.out.println("Enter the string");
    str=S.nextLine();
    int length=str.length();
    for(int i=0;i<length;i++)
    {
        str1=str.substring(1, length-1);
    }
    System.out.println(str1);
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.