我想从字符串中删除最后一个字符。我试过这样做:
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并替换最后一个字母(删除它),但每次运行程序时,它都会删除与上一个字母相同的中间字母。
例如,这个词是“崇拜者”;在我运行该方法后,我得到了“赞赏”。我想让它返回admire这个词。
答案 0 :(得分:577)
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;
}
答案 1 :(得分:213)
为什么不只是一个班轮?
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);
}
}
答案 2 :(得分:82)
由于我们在一个主题上,人们也可以使用正则表达式
"aaabcd".replaceFirst(".$",""); //=> aaabc
答案 3 :(得分:66)
所描述的问题和提出的解决方案有时涉及移除分离器。如果这是你的情况,那么看看Apache Commons StringUtils,它有一个非常优雅的方法removeEnd。
示例:
StringUtils.removeEnd("string 1|string 2|string 3|", "|");
会导致: " string 1 | string 2 | string 3"
答案 4 :(得分:44)
public String removeLastChar(String s) {
if (s == null || s.length() == 0) {
return s;
}
return s.substring(0, s.length()-1);
}
答案 5 :(得分:29)
不要尝试重新发明轮子,而其他人已经编写了库来执行字符串操作:
org.apache.commons.lang3.StringUtils.chop()
答案 6 :(得分:17)
使用此:
if(string.endsWith("x")) {
string= string.substring(0, string.length() - 1);
}
答案 7 :(得分:11)
if (str.endsWith("x")) {
return str.substring(0, str.length() - 1);
}
return str;
例如,这个词是“崇拜者”;在我运行该方法后,我得到了“赞赏”。我想让它返回admire这个词。
如果你正在尝试stem英文单词
词干是将变形(或有时派生)单词减少到词干,词根或词形的过程 - 通常是书面形式。
...
例如,英语的词干分析器应该根据根“cat”和“stemmer”,“stemming”,“”来识别字符串“cats”(可能还有“catlike”,“catty”等)。源于“基于”词干“。词干算法将“钓鱼”,“钓鱼”,“鱼”和“渔夫”等词语简化为词根“鱼”。
Difference between Lucene stemmers: EnglishStemmer, PorterStemmer, LovinsStemmer概述了一些Java选项。
答案 8 :(得分:9)
就可读性而言,我发现这是最简洁的
StringUtils.substring("string", 0, -1);
负面索引可以在Apache的StringUtils实用程序中使用。 所有负数都是从字符串末尾的偏移量处理的。
答案 9 :(得分:4)
删除'xxx'的最后一次出现:
System.out.println("aaa xxx aaa xxx ".replaceAll("xxx([^xxx]*)$", "$1"));
删除最后一次出现的'xxx'(如果它是最后一次):
System.out.println("aaa xxx aaa ".replaceAll("xxx\\s*$", ""));
您可以根据需要更换“xxx”,但要注意特殊字符
答案 10 :(得分:3)
public String removeLastChar(String s) {
if (!Util.isEmpty(s)) {
s = s.substring(0, s.length()-1);
}
return s;
}
答案 11 :(得分:3)
// creating StringBuilder
StringBuilder builder = new StringBuilder(requestString);
// removing last character from String
builder.deleteCharAt(requestString.length() - 1);
答案 12 :(得分:3)
查看StringBuilder类:
StringBuilder sb=new StringBuilder("toto,");
System.out.println(sb.deleteCharAt(sb.length()-1));//display "toto"
答案 13 :(得分:2)
答案 14 :(得分:2)
如何使一个简单的任务变得复杂。我的解决方案是:
public String removeLastChar(String s) {
return s[0..-1]
}
或
public String removeLastChar(String s) {
if (s.length() > 0) {
return s[0..-1]
}
return s
}
答案 15 :(得分:2)
// 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;
}
答案 16 :(得分:2)
一个单行答案(只是有趣的替代 - 不要在家里尝试这个,并且已经给出了很好的答案):
public String removeLastChar(String s){return (s != null && s.length() != 0) ? s.substring(0, s.length() - 1): s;}
答案 17 :(得分:1)
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
答案 18 :(得分:1)
在Kotlin中,您可以使用字符串类的dropLast()方法。 它将从字符串中删除给定的数字。
ALTER TABLE dbo.User
ALTER COLUMN name VARCHAR(50) COLLATE Latin1_General_CS_AS NOT NULL;
答案 19 :(得分:1)
这里的大多数答案都忘记了surrogate pairs。
例如,字符?(代码点U + 1D56B)不适合单个char
,因此,要表示该字符,必须形成两个字符的替代对。
如果仅使用当前接受的答案(使用str.substring(0, str.length() - 1)
,则将替代对拼接起来,从而导致意外结果。
还应该检查一下最后一个字符是否为代理对:
public static String removeLastChar(String str) {
Objects.requireNonNull(str, "The string should not be null");
if (str.isEmpty()) {
return str;
}
char lastChar = str.charAt(str.length() - 1);
int cut = Character.isSurrogate(lastChar) ? 2 : 1;
return str.substring(0, str.length() - cut);
}
答案 20 :(得分:0)
使用 StringUtils.Chop(Str) 它还处理空字符串和空字符串,你需要导入 common-io:
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.8.0</version>
</dependency>
答案 21 :(得分:0)
如果我们想删除给定文件的文件扩展名,
** 示例代码
public static String removeNCharactersFromLast(String str,int n){
if (str != null && (str.length() > 0)) {
return str.substring(0, str.length() - n);
}
return "";
}
答案 22 :(得分:0)
如果您想在最后删除特定字符,可以使用:
myString.removeSuffix("x")
答案 23 :(得分:0)
易用性
StringBuilder sb= new StringBuilder();
for(Entry<String,String> entry : map.entrySet()) {
sb.append(entry.getKey() + "_" + entry.getValue() + "|");
}
String requiredString = sb.substring(0, sb.length() - 1);
答案 24 :(得分:0)
public String removeLastCharacter(String str){
String result = null;
if ((str != null) && (str.length() > 0)) {
return str.substring(0, str.length() - 1);
}
else{
return "";
}
}
答案 25 :(得分:0)
假设我的字符串的总长度为24 我想在第14个位置后切掉最后一个字符以结束,这意味着我要从第14个位置开始。 因此,我采用以下解决方案。
String date = "2019-07-31T22:00:00.000Z";
String result = date.substring(0, date.length() - 14);
答案 26 :(得分:0)
只需像这样替换“ if”的条件:
if(a.substring(a.length()-1).equals("x"))'
这将为您解决问题。
答案 27 :(得分:0)
我们可以使用子字符串。这是例子,
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);
}
}
答案 28 :(得分:0)
这是一个适用于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())));
}
答案 29 :(得分:0)
如何在最后的递归中创建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"
答案 30 :(得分:0)
我不得不为类似的问题编写代码。我能够解决它的一种方法是使用递归的编码方法。
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;
}
我在这个主题上看到的大多数代码都没有使用递归,所以希望我可以帮助你或遇到同样问题的人。
答案 31 :(得分:0)
"String name" = "String name".substring(0, ("String name".length() - 1));
我在我的代码中使用它,它简单易行。 它仅在String>&gt;时有效。 0。 我将它连接到一个按钮,并在以下 if 语句
中if ("String name".length() > 0) {
"String name" = "String name".substring(0, ("String name".length() - 1));
}
答案 32 :(得分:0)
如果你有特殊的性格喜欢;在json中只使用String.replace(“;”,“”),否则你必须重写字符串中的所有字符减去最后一个字符。
答案 33 :(得分:-1)
答案 34 :(得分:-1)
Kotlin退房
val string = "<<<First Grade>>>"
println(string.drop(6)) // st Grade>>>
println(string.dropLast(6)) // <<<First Gr
println(string.dropWhile { !it.isLetter() }) // First Grade>>>
println(string.dropLastWhile { !it.isLetter() }) // <<<First Grade
答案 35 :(得分:-1)
这是删除字符串中最后一个字符的一种方法:
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]);
}