2012-09-01 86 views
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它在后台处理的变量类型转换

回答

0

更改方法声明这一点:

public static SpannableString removeSquareBracketsFromText(CharSequence text) { 

而改变返回statment这样:

return new SpannableString(outputText); 
+0

哦,不!这是删除[方括号],但也失去了我对文本的所有格式。这可能是由'.toString()'造成的吗?为了澄清,SpannableString I提供(并应该删除)包含URL链接。 – CaptainProg

+0

是的!它是。似乎return语句不应该包含'.toString()'。然后,它完美的工作(我已经编辑了你的答案,以反映这一点) – CaptainProg

+0

在这种情况下,你prolly要保持它作为SpannableStringBuilder。 你可以这样做:textView.setText(ssb); – Solubris