删除java中特定单词后面或前面的字符串部分
java中是否有命令删除某个单词之后或之前的字符串的其余部分 例如: 删除单词“take”前的子字符串 之前: “我需要把这句话去掉,请拿走” 之后:删除java中特定单词后面或前面的字符串部分,java,Java,java中是否有命令删除某个单词之后或之前的字符串的其余部分 例如: 删除单词“take”前的子字符串 之前: “我需要把这句话去掉,请拿走” 之后: “take please”字符串是不可变的,但是您可以找到该单词并创建一个子字符串: public static String removeTillWord(String input, String word) { return input.substring(input.indexOf(word)); } removeTillWord
“take please”字符串是不可变的,但是您可以找到该单词并创建一个子字符串:
public static String removeTillWord(String input, String word) {
return input.substring(input.indexOf(word));
}
removeTillWord("I need this words removed taken please", "taken");
有一个apachecommons lang类正好包含您想要的:
e、 g.
publicstaticstringsubstringbefore(stringstr,stringseparator)
安全删除字符串的干净方法
String input = "I need this words removed taken please";
String token = "taken";
String result = input.contains(token)
? token + StringUtils.substringAfter(string, token)
: input;
函数是空的、空的和无匹配安全的
因为OP提供了明确的要求 将字符串的其余部分移到某个单词的之后或之前 现在还没有人完成这些任务,这是我解决问题的方法。实施有一定的规则,但总的来说,如果OP来重新审视这个问题,它应该满足OP的需求
public static String remove(String input, String separator, boolean before) {
Objects.requireNonNull(input);
Objects.requireNonNull(separator);
if (input.trim().equals(separator)) {
return separator;
}
if (separator.isEmpty() || input.trim().isEmpty()) {
return input;
}
String[] tokens = input.split(separator);
String target;
if (before) {
target = tokens[0];
} else {
target = tokens[1];
}
return input.replace(target, "");
}
这也将删除不是OP想要的分隔符。@Pshemo和什么?我想他真的想从“在单词
“take”
之前删除子字符串”这个问题中得到答案,OP解释为:在之前,“我需要删除这个单词,请执行”
之后:“take请执行”
,所以你可以看到“take”
是结果(之后)的一部分,所以它没有被删除。只是为了清楚,我不是说你的方法不好。我只是指出它需要一些润色。我想删除关键字,所以你的回答节省了我一点时间。谢谢。缺少返回类型:d如果输入字符串中有一个重复的单词,并且想要删除第二个重复的单词,该怎么办?使用返回input.substring(input.indexOf(word)+word.length())
如果想要删除,包括单词takenIfstr=“我需要删除这个单词,请”
和删除=“我需要删除这些单词”
然后str.indexOf(remove)=0
。作为回报,它从一开始就返回str
,即不删除任何内容。@GeroldBroser这是正确的行为,因为如示例中所示,搜索的部分需要保留(它是被删除之前/之后的部分)@Pshemo我没有写我之前的评论,因为它不知怎么地没有给出想要的结果。这是命名不好的。你希望作为名为删除的字符串参数的输入是什么?
要删除的文本还是应该保留的文本?它应该保留还是应该删除?@GeroldBroser哦,在这种情况下,我是我理解你的评论(很抱歉),你是对的,该变量的名称不正确。但为了防止你的评论是导致否决票的原因,我将把我的回答留给其他人,他们(像我一样)可能会误解我的回答,不再否决它(因为我错误的变量名称不是否决票的适当理由)@GeroldBroser好吧,在这种情况下,这个方法是完全错误的,因为它应该检查输入字符串是否为null..但我写得很快。它还应该检查indexOf是否返回-1。提出问题的人应该更加努力理解它,并进行所有的修复。
public static String remove(String input, String separator, boolean before) {
Objects.requireNonNull(input);
Objects.requireNonNull(separator);
if (input.trim().equals(separator)) {
return separator;
}
if (separator.isEmpty() || input.trim().isEmpty()) {
return input;
}
String[] tokens = input.split(separator);
String target;
if (before) {
target = tokens[0];
} else {
target = tokens[1];
}
return input.replace(target, "");
}