删除java中特定单词后面或前面的字符串部分

删除java中特定单词后面或前面的字符串部分,java,Java,java中是否有命令删除某个单词之后或之前的字符串的其余部分 例如: 删除单词“take”前的子字符串 之前: “我需要把这句话去掉,请拿走” 之后: “take please”字符串是不可变的,但是您可以找到该单词并创建一个子字符串: public static String removeTillWord(String input, String word) { return input.substring(input.indexOf(word)); } removeTillWord

java中是否有命令删除某个单词之后或之前的字符串的其余部分

例如:

删除单词“take”前的子字符串

之前: “我需要把这句话去掉,请拿走”

之后:


“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())
如果想要删除,包括单词takenIf
str=“我需要删除这个单词,请”
删除=“我需要删除这些单词”
然后
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, "");
}