我想从字符串中删除最后一个字符。 我尝试这样做:
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并用任何内容替换最后一个字母(删除它),但是每次我运行程序时,它都会删除与最后一个字母相同的中间字母。
例如,单词“ admirer”; 运行该方法后,我得到“ admie”。 我希望它返回佩服一词。
#1楼
为什么不只是一个班轮?
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楼
所描述的问题和提出的解决方案有时涉及移除分隔符。 如果是这种情况,请查看Apache Commons StringUtils,它有一个称为removeEnd的方法,非常好用 。
例:
StringUtils.removeEnd("string 1|string 2|string 3|", "|");
结果为:“字符串1 |字符串2 |字符串3”
#3楼
if (str.endsWith("x")) {
return str.substring(0, str.length() - 1);
}
return str;
例如,单词“ admirer”; 运行该方法后,我得到“ admie”。 我希望它返回佩服一词。
如果您想阻止英语单词
词干处理是将变形的(或有时衍生的)词减少为词干,基词或词根形式(通常是书面词形式)的过程。
...
例如,英语的词干分析器应基于根“ cat”来识别字符串“ cats”(可能还包括“ catlike”,“ catty”等),而“ stemmer”,“ stemming”,“ stemmed”则应识别为基于“词干”。 词干提取算法将单词“ fishing”,“ fished”,“ fish”和“ fisher”简化为词根“ fish”。
Lucene词干提取器之间的区别:EnglishStemmer,PorterStemmer,LovinsStemmer概述了一些Java选项。
#4楼
由于我们正在研究主题,因此也可以使用正则表达式
"aaabcd".replaceFirst(".$",""); //=> aaabc
#5楼
用这个:
if(string.endsWith("x")) {
string= string.substring(0, string.length() - 1);
}
#6楼
不要尝试重新发明轮子,而其他人已经编写了执行字符串操作的库: org.apache.commons.lang3.StringUtils.chop()
#7楼
public String removeLastChar(String s) {
if (!Util.isEmpty(s)) {
s = s.substring(0, s.length()-1);
}
return s;
}
#8楼
删除“ xxx”的最后一次出现:
System.out.println("aaa xxx aaa xxx ".replaceAll("xxx([^xxx]*)$", "$1"));
如果最后出现“ xxx”,则将其删除:
System.out.println("aaa xxx aaa ".replaceAll("xxx\\s*$", ""));
您可以根据需要替换“ xxx”,但要注意特殊字符
#9楼
单线答案(只是一个有趣的选择 -不要在家中尝试此方法,并且已经给出了很好的答案):
public String removeLastChar(String s){return (s != null && s.length() != 0) ? s.substring(0, s.length() - 1): s;}
#10楼
// 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;
}
#11楼
查看StringBuilder类:
StringBuilder sb=new StringBuilder("toto,");
System.out.println(sb.deleteCharAt(sb.length()-1));//display "toto"
#12楼
如果你有特殊的个性,如; 在json中,只需使用String.replace(“;”,“”),否则您必须重写字符串中的所有字符减去最后一个字符。
#13楼
"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));
}
#14楼
这是删除字符串中最后一个字符的一种方法:
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]);
}
#15楼
为什么不使用转义序列 ...!
System.out.println(str + '\b');
现在生活要容易得多。 XD! 〜可读的单线
#16楼
就可读性而言,我认为这是最简洁的
StringUtils.substring("string", 0, -1);
负索引可以在Apache的StringUtils实用程序中使用。 从字符串末尾的偏移量开始处理所有负数。
#17楼
我不得不为类似的问题编写代码。 我能够解决它的一种方法是使用递归编码方法。
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;
}
我在该主题上看到的大多数代码都不使用递归,因此希望我能为您或遇到相同问题的人提供帮助。
#18楼
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
#19楼
如何在最后的递归中使用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"
#20楼
这是与基本多语言平面(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())));
}
#21楼
我们可以使用子字符串。 这是例子
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);
}
}
#22楼
// creating StringBuilder
StringBuilder builder = new StringBuilder(requestString);
// removing last character from String
builder.deleteCharAt(requestString.length() - 1);
#23楼
在Kotlin中,可以使用字符串类的dropLast()方法。 它将从字符串中删除给定的数字,返回一个新的字符串
var string1 = "Some Text"
string1 = string1.dropLast(1)
#24楼
你可以做到hereString = hereString.replace(hereString.chatAt(hereString.length()-1),'whitespeace');
#25楼
这里的大多数答案都忘记了代理对 。
例如,字符𝕫(代码点U + 1D56B)不适合单个char
,因此要表示该字符,必须形成两个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);
}
#26楼
只需像这样替换“ if”的条件:
if(a.substring(a.length()-1).equals("x"))'
这将为您解决问题。
#27楼
假设我的字符串的总长度= 24,我想在位置14之后切掉最后一个字符以结束,这意味着我想从14开始。 因此,我采用以下解决方案。
String date = "2019-07-31T22:00:00.000Z";
String result = date.substring(0, date.length() - 14);
#28楼
public String removeLastCharacter(String str){
String result = null;
if ((str != null) && (str.length() > 0)) {
return str.substring(0, str.length() - 1);
}
else{
return "";
}
}
#29楼
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;
}
#30楼
public String removeLastChar(String s) {
if (s == null || s.length() == 0) {
return s;
}
return s.substring(0, s.length()-1);
}