How to remove the last character from a string?
我想从字符串中删除最后一个字符。我试过这样做:
1 2 3 4 5 6 7 8 |
获取字符串-1的长度,将最后一个字母替换为空(将其删除),但每次运行程序时,它都会删除与最后一个字母相同的中间字母。
例如,这个词是"仰慕者";我运行这个方法后,得到"admie"。我希望它返回"仰慕"这个词。
1 2 3 4 5 6 |
为什么不只是一条航线?
全码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | 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); } } |
演示
既然我们讨论的是一个主题,我们也可以使用正则表达式。
1 | "aaabcd".replaceFirst(".$",""); //=> aaabc |
所描述的问题和建议的解决方案有时与拆卸分离器有关。如果这是您的情况,那么看看ApacheCommonsStringUtils,它有一个名为removeend的方法,非常优雅。
例子:
1 | StringUtils.removeEnd("string 1|string 2|string 3|","|"); |
会导致:"字符串1字符串2字符串3"
1 2 3 4 5 6 |
当其他人已经编写了执行字符串操作的库时,不要试图重新设计控制盘:
使用此:
1 2 3 4 | if(string.endsWith("x")) { string= string.substring(0, string.length() - 1); } |
1 2 3 4 | if (str.endsWith("x")) { return str.substring(0, str.length() - 1); } return str; |
For example, the word is"admirer"; after I run the method, I get"admie." I want it to return the word admire.
如果你想阻止英语单词
Stemming is the process for reducing inflected (or sometimes derived) words to their stem, base or root form—generally a written word form.
...
A stemmer for English, for example, should identify the string"cats" (and possibly"catlike","catty" etc.) as based on the root"cat", and"stemmer","stemming","stemmed" as based on"stem". A stemming algorithm reduces the words"fishing","fished","fish", and"fisher" to the root word,"fish".
Lucene STMeMe: EnglishStemmer,PorterStemmer,LovinsStemmer概述了一些Java选项。
就可读性而言,我认为这是最简洁的
1 | StringUtils.substring("string", 0, -1); |
负索引可以在Apache的StringUtils实用程序中使用。从字符串结尾的偏移量开始处理所有负数。
删除"xxx"的最后一次出现:
1 |
删除"xxx"的最后一次出现(如果是最后一次出现的话):
1 |
你可以把"XXX"换成你想要的,但要注意特殊字符。
查找StringBuilder类:
1 2 | StringBuilder sb=new StringBuilder("toto,"); System.out.println(sb.deleteCharAt(sb.length()-1));//display"toto" |
1 2 3 4 | // creating StringBuilder StringBuilder builder = new StringBuilder(requestString); // removing last character from String builder.deleteCharAt(requestString.length() - 1); |
1 2 3 4 5 6 |
一个简单的答案(只是一个有趣的选择-不要在家里尝试这个,已经给出了很好的答案):
1 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | // 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; } |
为什么不使用转义序列…!
1 |
现在生活容易多了。除息的!~一个可读的一行程序
爪哇8
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | 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); } } |
输出:测试AB
1 | "String name" ="String name".substring(0, ("String name".length() - 1)); |
我在我的代码中使用它,这很简单。它只在字符串大于0时工作。我把它连接到一个按钮上,并在下面的if语句中
1 2 3 | if ("String name".length() > 0) { "String name" ="String name".substring(0, ("String name".length() - 1)); } |
我不得不为类似的问题编写代码。有一种方法我可以用递归的编码方法来解决它。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
我在本主题中看到的大多数代码都不使用递归,所以希望我能帮助您或有相同问题的人。
如何在结尾处使递归中的字符:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | 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; } |
为例:
1 2 | removeChar ("hello world, let's go!",'l') →"heo word, et's go!llll" removeChar("you should not go",'o') →"yu shuld nt goooo" |
这是一个用基本多语言平面(Java 8 +)之外的代码点工作的答案。
使用流:
1 2 3 4 5 6 |
更有效的可能是:
1 2 3 |
我们可以使用子字符串。举个例子,
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | 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); } } |
在Kotlin中,可以使用String类的DropLast()方法。它将从字符串中删除给定的数字。
1 2 | val string1 ="Some Text" string1.dropLast(1) |
如果在JSON中有类似的特殊字符,只需使用string.replace(";",),否则必须重写string中减去最后一个字符的所有字符。
你能做到我hereString=hereString.replace(hereString.chatat(hereString.length()-1),"whitespeace");
这是删除字符串中最后一个字符的一种方法:
1 2 3 4 5 6 7 |