1
我正在使用通过SpannableString文本查找正则表达式的代码片段,并删除该表达式的任何实例的第一个和最后一个字符 - 在这种情况下,文本由[方括号]。将SpannableString传递给函数,返回SpannableString
输出应该与SpannableString相同,但不包含括号。例如:
input: Text [that] looks [like this]
output: Text that looks like this
但是,我无法获得调用该函数的语法并返回SpannableString格式的文本。
下面的代码片段,其执行转换:
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)告诉我错误在word中(removeSquareBracketsFromText':“类型不匹配:不能从CharSequence转换为SpannableString”。
任何帮助表示赞同你可能知道我对Java相当陌生,我习惯了MATLAB它在后台处理的变量类型转换
哦,不!这是删除[方括号],但也失去了我对文本的所有格式。这可能是由'.toString()'造成的吗?为了澄清,SpannableString I提供(并应该删除)包含URL链接。 – CaptainProg
是的!它是。似乎return语句不应该包含'.toString()'。然后,它完美的工作(我已经编辑了你的答案,以反映这一点) – CaptainProg
在这种情况下,你prolly要保持它作为SpannableStringBuilder。 你可以这样做:textView.setText(ssb); – Solubris