【问题标题】:Pass SpannableString to function, return SpannableString将 SpannableString 传递给函数,返回 SpannableString
【发布时间】:2012-09-01 22:21:44
【问题描述】:

我正在使用一个 sn-p 代码,它通过 SpannableString 文本寻找正则表达式,并删除该表达式的任何实例的第一个和最后一个字符 - 在这种情况下,文本由 [方括号] 绑定。

输出应该是相同的 SpannableString,但没有括号。例如:

input: Text [that] looks [like this]
output: Text that looks like this

但是,我无法正确调用函数并以 SpannableString 格式返回文本。

这是进行转换的代码 sn-p:

public static CharSequence removeSquareBracketsFromText(CharSequence text) {

    SpannableStringBuilder outputText = new SpannableStringBuilder( text );

    if( pattern != null )
    {
        Matcher matcher = pattern.matcher( text );
        int matchesSoFar = 0;
        while( matcher.find() )
        {
            int start = matcher.start() - (matchesSoFar * 2);
            int end = matcher.end() - (matchesSoFar * 2);
            outputText.setSpan( text, start + 1, end - 1, 0 );
            outputText.delete(start, start + 1);
            outputText.delete(end - 2, end -1);
            matchesSoFar++;
        }
    }
    return outputText;
}

当我将 SpannableString 传递给函数时,我(尝试)这样做:

SpannableString outputText= removeSquareBracketsFromText(inputText);

我怀疑错误在于我调用函数的方式的语法,但我不确定。我的 IDE (Eclipse) 告诉我错误出现在单词中 (removeSquareBracketsFromText': "Type mismatch: cannot convert from CharSequence to SpannableString"。

任何帮助表示赞赏。正如您可能知道的那样,我对 Java 相当陌生,并且习惯于在后台处理变量类型转换的 MATLAB。

【问题讨论】:

    标签: java spannablestring


    【解决方案1】:

    将方法声明更改为:

    public static SpannableString removeSquareBracketsFromText(CharSequence text) {
    

    并将返回语句更改为:

        return new SpannableString(outputText);
    

    【讨论】:

    • 哦不!这删除了 ​​[方括号],但也丢失了我对文本的所有格式。这可能是由“.toString()”引起的吗?澄清一下,我输入(并且应该退出)的 SpannableString 包含 URL 链接。
    • 是的!它是。似乎返回语句不应该包含“.toString()”。然后它完美地工作(我已经编辑了你的答案以反映这一点)
    • 在这种情况下,您可能希望将其保留为 SpannableStringBuilder。你可以这样做:textView.setText(ssb);
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-03-17
    • 2016-11-22
    • 1970-01-01
    • 1970-01-01
    • 2015-07-28
    • 2019-06-16
    • 2011-03-11
    相关资源
    最近更新 更多