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

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

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; } } 

获取string的长度 – 1,并用空白replace最后一个字母(删除它),但是每次运行程序时,都会删除与最后一个字母相同的中间字母。

例如,这个词是“崇拜者”; 我运行该方法后,我得到了“admie”。 我希望它能够返回“佩服”这个词。

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; } 

为什么不只是一个class轮?

 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); } } 

演示

由于我们在一个主题上,所以也可以使用正则expression式

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

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

例:

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

会导致:“string1 |string2 |string3”

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

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

用这个:

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

例如,这个词是“崇拜者”; 我运行该方法后,我得到了“admie”。 我希望它能够返回“佩服”这个词。

如果你想阻止英语单词

词干是将词干,词根或词根变形的(或者有时衍生的)词汇缩减的过程,通常是书面forms。

例如,一个英文词干应该根据词根“猫”,“词干”,“词干”,“词干”来标识string“猫”(可能是“猫”,“斤”等)基于“干”。 词干algorithm将“钓鱼”,“钓鱼”,“鱼”和“渔夫”这两个词缩写为词“鱼”。

Lucene引发器之间的区别:EnglishStemmer,PorterStemmer,LovinsStemmer概述了一些Java选项。

就可读性而言,我觉得这是最简洁的

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

负面的索引可以在Apache的StringUtils工具中使用。 所有负数都是从string末尾的偏移量开始处理的。

期待StringBuilder类:

  StringBuilder sb=new StringBuilder("toto,"); System.out.println(sb.deleteCharAt(sb.length()-1));//display "toto" 

一个简单的答案(只是一个有趣的select – 不要在家里尝试,已经给出了很好的答案):

 public String removeLastChar(String s){return (s != null && s.length() != 0) ? s.substring(0, s.length() - 1): s;} 
 public String removeLastChar(String s) { if (!Util.isEmpty(s)) { s = s.substring(0, s.length()-1); } return s; } 

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

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

删除最后一次出现的'xxx',如果是最后一个:

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

你可以replace你想要的'xxx',但注意特殊的字符

 // 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; } 

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

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

现在生活要容易得多。 XD! 〜可读的一行

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

这是删除string中最后一个字符的一种方法:

 Scanner in = new Scanner(System.in); String s = in.nextLine(); char array[] = s.toCharArray(); int l = array.length; for (int i = 0; i < l-1; i++) { System.out.print(array[i]); } 

我不得不怀疑类似的问题。 我能够解决的一种方法是使用recursion编码方法。

 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; } 

我在这个主题上看到的大部分代码都没有使用recursion,希望我可以帮助你或者有同样问题的人。

  "String name" = "String name".substring(0, ("String name".length() - 1)); 

我在我的代码中使用这个,它很容易和简单。 它只适用于string> 0。我有它连接到一个button,并在以下if语句

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