【问题标题】:Replacing all subsequent characters of a string, after matching a substring在匹配子字符串后替换字符串的所有后续字符
【发布时间】:2017-07-05 13:36:47
【问题描述】:

我尝试用另一个字符替换字符串中的一个字符及其后面的所有字符。

这是我目前的代码。

String name = "Peter Pan";
name = name.replace("er", "abc");
Log.d("Name", name)

结果应该是:“Petabc”

我非常感谢您对此事的任何帮助!

【问题讨论】:

  • replace() 只会替换您通过参数传递的内容,在您的情况下为“er”。
  • 如果结果应该是 Petabc 那么 name.replace("er" , "abc") 的代码输出是什么?调试能给你带来什么?
  • @ShayHaned 调试给出“Petabc Pan”
  • 您是否希望在替换发生后将 Pan 从序列中删除?
  • replace() 执行后将这两行添加到您的代码中 int index = name.lastIndexOf("abc");if(index != -1) name = name.substring( 0 , index + "abc".length() );

标签: java string replace substring character


【解决方案1】:

实现目标的方法:

  • 在字符串中搜索要替换的序列的第一次出现
  • 使用该索引并使用 String#substring 剪切字符串
  • 将替换序列添加到刚刚创建的子字符串的末尾

鳍。

祝你好运。

编辑

在代码中它可能看起来像这样(未经测试)

public static String customReplace(String input, String replace)
{
int index = input.indexOf(replace);

if(index >= 0)
{
    return input.substring(index) + replace; //cutting string down to the required part and adding the replace
}
else
    return null; //String 'input' doesn't contain String 'replace'
}

【讨论】:

    【解决方案2】:

    你可以在这里使用正则表达式和String 的内置replaceAll 方法来非常轻松地做你想做的事:

    original.replaceFirst(toReplace + ".*", replaceWith);
    

    例如:

    String original = "testing 123";
    String toReplace = "ing";
    String replaceWith = "er";
    String replaced = original.replaceFirst(toReplace + ".*", replaceWith);
    

    在上面之后,replaced 将被设置为"tester"

    【讨论】:

      猜你喜欢
      • 2014-08-01
      • 2017-03-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多