【问题标题】:Replace an insensitive substring, keeping the case替换不敏感的子字符串,保持大小写
【发布时间】:2013-10-31 23:51:36
【问题描述】:

我需要在 Android 的 ListView 中突出显示 TextView 并查看 at CommonsWare response here 我决定使用 .setText(Html.fromHtml(htmlString) 方法。 所以在我的适配器中我有这个 formatString() 方法。

我遇到了 2 个问题:

1) 它似乎不起作用。

2) 即使它可以工作,它也会受到限制,因为 fullString 可以全部为大写字母、全部为小写字母或以大写字符作为单词中的第一个字符。

textToHighlight 只会出现在 fullString 中单词的开头。

private String formatString(String textToHighlight, String fullString) {
        if (textToHighlight== null || textToHighlight.equals("")) {
            return fullString;
        }
        String colore = "\"#0099CC\"";

        String htmlSubString = "<font color=" + colore + ">"
                + textToHighlight+ "!</font>";

        fullString.replace(textToHighlight, htmlString);

        return fullString;
    }

输出应该是:

a) formatString("ca", "Cake Maccaroni") = "<font color=\"#0099CC\">Ca</font>ke Maccaroni"
b) formatString("ca", "CAKE MACCARONI") = "<font color=\"#0099CC\">CA</font>KE MACCARONI"
c) formatString("ca", "Maccaroni Cake") = "Maccaroni <font color=\"#0099CC\">Ca</font>ke"
d) formatString("ca", "MACCARONI CAKE") = "MACCARONI <font color=\"#0099CC\">CA</font>KE"
e) formatString("ca", "cake maccaroni") = "<font color=\"#0099CC\">ca</font>ke maccaroni"

【问题讨论】:

  • 问题 2 可能与 stackoverflow.com/questions/8753163/… 重复
  • 你是对的,它有效,以前可以找到它。我应该在新的答案中提供答案、编辑问题还是闭嘴?
  • 我想我们不需要再说什么了。

标签: java android string replace


【解决方案1】:

如果你想使用它,你必须将fullString.replace(textToHighlight, htmlString); 方法的结果赋给一个值。 return fullString.replace(textToHighlight, htmlString); 应该解决第一个问题。

【讨论】:

    【解决方案2】:

    String 对象是不可变的。这意味着一旦 String 对象被初始化,就无法更改其内容。

    replace() 方法不会改变你调用它的String 对象;相反,它会返回一个新的 String 对象,其中包含您想要执行的替换。

    你没有对replace() 方法的返回值做任何事情,所以你的代码没有效果。您只是返回原始字符串。更改代码以返回 replace() 方法的结果:

    return fullString.replace(textToHighlight, htmlString);
    

    要解决您的其他问题,您需要使您的方法更加复杂。您可以通过使用replaceFirst() 而不是replace() 来做到这一点,replace() 将正则表达式作为第一个参数(而不是纯字符串)。您必须根据textToHighlight 和您的要求仔细构建正则表达式。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-05-19
      • 1970-01-01
      • 2010-11-26
      • 1970-01-01
      • 2011-02-06
      • 1970-01-01
      • 1970-01-01
      • 2019-04-15
      相关资源
      最近更新 更多