it-swarm.cn

如何从字符串中删除最后一个字符?

我想从字符串中删除最后一个字符。我试过这样做:

public String method(String str) {
    if (str.charAt(str.length()-1)=='x'){
        str = str.replace(str.substring(str.length()-1), "");
        return str;
    } else{
        return str;
    }
}

获取字符串的长度 - 1并替换最后一个字母(删除它),但每次运行程序时,它都会删除与最后一个字母相同的中间字母。

例如,这个词是“崇拜者”;在我运行该方法后,我得到了“赞赏”。我希望它能让人钦佩。

404
duaprog137

replace将替换所有字母实例。您需要做的就是使用 substring()

public String method(String str) {
    if (str != null && str.length() > 0 && str.charAt(str.length() - 1) == 'x') {
        str = str.substring(0, str.length() - 1);
    }
    return str;
}
573
Gary Buyn

为什么不只是一个班轮?

private static String removeLastChar(String str) {
    return str.substring(0, str.length() - 1);
}

完整代码

import Java.util.*;
import Java.lang.*;

public class Main {
    public static void main (String[] args) throws Java.lang.Exception {
        String s1 = "Remove Last CharacterY";
        String s2 = "Remove Last Character2";
        System.out.println("After removing s1==" + removeLastChar(s1) + "==");
        System.out.println("After removing s2==" + removeLastChar(s2) + "==");

    }

    private static String removeLastChar(String str) {
        return str.substring(0, str.length() - 1);
    }
}

演示

213
Fahim Parkar

由于我们是一个主题,人们也可以使用正则表达式

"aaabcd".replaceFirst(".$",""); //=> aaabc  
82
iddqd

所描述的问题和提出的解决方案有时涉及移除分离器。如果这是你的情况,那么看看Apache Commons StringUtils,它有一个名为 removeEnd 的方法非常优雅。

例:

StringUtils.removeEnd("string 1|string 2|string 3|", "|");

会导致:“string 1 | string 2 | string 3”

65
Mart135688
public String removeLastChar(String s) {
    if (s == null || s.length() == 0) {
        return s;
    }
    return s.substring(0, s.length()-1);
}
44
BobBobBob

不要试图重新发明轮子,而其他人已经编写了库来执行字符串操作: org.Apache.commons.lang3.StringUtils.chop()

29
membersound

用这个:

 if(string.endsWith("x")) {

    string= string.substring(0, string.length() - 1);
 }
17
Navaneeth
if (str.endsWith("x")) {
  return str.substring(0, str.length() - 1);
}
return str;

例如,这个词是“崇拜者”;在我运行该方法后,我得到了“赞赏”。我希望它能让人钦佩。

如果您正在尝试 英语单词

词干是将变形(或有时派生)单词减少到词干,词根或词形的过程 - 通常是书面形式。

...

例如,英语的词干分析器应该根据根“cat”和“stemmer”,“stemming”,“stemmed”识别字符串“cats”(可能还有“catlike”,“catty”等)。基于“干”。词干算法将词语“钓鱼”,“钓鱼”,“鱼”和“渔夫”简化为根词“鱼”。

Lucene词干分析器之间的区别:EnglishStemmer,PorterStemmer,LovinsStemmer 概述了一些Java选项。

11
Mike Samuel

就可读性而言,我发现这是最简洁的

StringUtils.substring("string", 0, -1);

负索引可以在Apache的StringUtils实用程序中使用。所有负数都是从字符串末尾的偏移量处理的。

9
Kasturi

删除'xxx'的最后一次出现:

    System.out.println("aaa xxx aaa xxx ".replaceAll("xxx([^xxx]*)$", "$1"));

删除最后一次出现的'xxx'(如果它是最后一次):

    System.out.println("aaa xxx aaa  ".replaceAll("xxx\\s*$", ""));

您可以根据自己的需要更换'xxx',但要注意特殊字符

4
Arkadiusz Cieśliński

看看StringBuilder类:

    StringBuilder sb=new StringBuilder("toto,");
    System.out.println(sb.deleteCharAt(sb.length()-1));//display "toto"
3
aeocom
 // creating StringBuilder
 StringBuilder builder = new StringBuilder(requestString);
 // removing last character from String
 builder.deleteCharAt(requestString.length() - 1);
3
Bachan Joseph
public String removeLastChar(String s) {
    if (!Util.isEmpty(s)) {
        s = s.substring(0, s.length()-1);
    }
    return s;
}
3
Ganesa Vijayakumar

一个单行答案(只是一个 有趣的选择 - 不要在家里尝试这个,并且已经给出了很好的答案):

public String removeLastChar(String s){return (s != null && s.length() != 0) ? s.substring(0, s.length() - 1): s;}
2
Nick Louloudakis

为什么不使用 转义序列 ...!

System.out.println(str + '\b');

生活现在变得容易多了。 XD! 〜一个可读的单行

2
Tilak Maddy
// Remove n last characters  
// System.out.println(removeLast("Hello!!!333",3));

public String removeLast(String mes, int n) {
    return mes != null && !mes.isEmpty() && mes.length()>n
         ? mes.substring(0, mes.length()-n): mes;
}

// Leave substring before character/string  
// System.out.println(leaveBeforeChar("Hello!!!123", "1"));

public String leaveBeforeChar(String mes, String last) {
    return mes != null && !mes.isEmpty() && mes.lastIndexOf(last)!=-1
         ? mes.substring(0, mes.lastIndexOf(last)): mes;
}
2
Oleksandr Paldypanida

在Kotlin中,您可以使用字符串类的dropLast()方法。它将从字符串中删除给定的数字。

val string1 = "Some Text"
string1.dropLast(1)
1
Mahavir Jain

Java 8

import Java.util.Optional;

public class Test
{
  public static void main(String[] args) throws InterruptedException
  {
    System.out.println(removeLastChar("test-abc"));
  }

  public static String removeLastChar(String s) {
    return Optional.ofNullable(s)
      .filter(str -> str.length() != 0)
      .map(str -> str.substring(0, str.length() - 1))
      .orElse(s);
    }
}

输出:test-ab

1
Nadhu

如果你有特殊的性格喜欢;在json中只使用String.replace(“;”,“”)否则你必须重写字符串中的所有字符减去最后一个字符。

0
MoadKey

我不得不为类似的问题编写代码。我能够解决它的一种方法是使用递归编码方法。

static String removeChar(String Word, char charToRemove)
{
    for(int i = 0; i < Word.lenght(); i++)
    {
        if(Word.charAt(i) == charToRemove)
        {
            String newWord = Word.substring(0, i) + Word.substring(i + 1);
            return removeChar(newWord, charToRemove);
        }
    }

    return Word;
}

我在这个主题上看到的大多数代码都没有使用递归,所以希望我可以帮助你或有同样问题的人。

0
Jacob Mehnert

如何在最后的递归中使char:

public static String  removeChar(String Word, char charToRemove)
    {
        String char_toremove=Character.toString(charToRemove);
        for(int i = 0; i < Word.length(); i++)
        {
            if(Word.charAt(i) == charToRemove)
            {
                String newWord = Word.substring(0, i) + Word.substring(i + 1);
                return removeChar(newWord,charToRemove);
            }
        }
        System.out.println(Word);
        return Word;
    }

举个例子:

removeChar ("hello world, let's go!",'l') → "heo Word, et's go!llll"
removeChar("you should not go",'o') → "yu shuld nt goooo"
0
simon francis

我们可以使用子字符串。这是一个例子,

public class RemoveStringChar 
{
    public static void main(String[] args) 
    {   
        String strGiven = "Java";
        System.out.println("Before removing string character - " + strGiven);
        System.out.println("After removing string character - " + removeCharacter(strGiven, 3));
    }

    public static String removeCharacter(String strRemove, int position)
    {   
        return strRemove.substring(0, position) + strRemove.substring(position + 1);    
    }
}
0
Shiva

这是一个适用于Basic Multilingual Plane(Java 8+)之外的代码点的答案。

使用流:

public String method(String str) {
    return str.codePoints()
            .limit(str.codePoints().count() - 1)
            .mapToObj(i->new String(Character.toChars(i)))
            .collect(Collectors.joining());
}

更高效的可能:

public String method(String str) {
    return str.isEmpty()? "": str.substring(0, str.length() - Character.charCount(str.codePointBefore(str.length())));
}
0
Patrick Parker
 "String name" = "String name".substring(0, ("String name".length() - 1));

我在我的代码中使用它,它简单易行。它仅在String> 0时有效。我将它连接到一个按钮并在下面的 if 语句中

if ("String name".length() > 0) {
    "String name" = "String name".substring(0, ("String name".length() - 1));
}
0
Donoso