【问题标题】:BufferReader doesnt go through whole textBufferReader 不会遍历整个文本
【发布时间】:2015-03-18 12:14:18
【问题描述】:

我有一个加粗某些字符的功能。一切正常,除了我在方法开始时拥有的字符串在某处被剪切并返回一半,而不是作为开始时得到的整个字符串。这是代码,我不知道我的错误在哪里。

public String boldovanjeAkorada(String text)
{
    String konacan = "<pre>";
    int i = 0;
    try {
        BufferedReader buff = new BufferedReader(new StringReader(text));
        for (String line = buff.readLine(); line != null; line = buff.readLine()) {

            for(i=0;i<line.length();i++)
            {
                char slovo = line.charAt(i);
                if(slovo == ' ' )
                {
                   if(line.charAt(i-1)!=' ' && line.charAt(i+1)!=' ')
                   {
                       konacan = konacan + slovo;
                   }
                    else{
                       konacan = konacan + "&nbsp";
                   }
                }
                else if(slovo == '(') {
                    konacan = konacan + "<b>"+slovo;
                }
                else if(slovo == ')') {

                konacan = konacan + slovo + "</b>";
                }
                else {
                        konacan = konacan + slovo;
                    }
                }

            konacan = konacan + "<br />";

            }
            buff.close();

        }catch (Exception e)
    {
        System.out.println(e.toString());
    }
    return konacan;
}

【问题讨论】:

  • for(i=0;i&lt;line.length();i++){...if(line.charAt(i-1)!=' ' &amp;&amp; line.charAt(i+1)!=' ')...} -- 可能超出范围(line.charAt(0)line.chrAt(line.length())
  • 越界将是一个问题,但会产生异常。您应该使用 StringBuilder,但这并不能解决问题。

标签: java android string char bufferedreader


【解决方案1】:

改变

if(line.charAt(i-1)!=' ' && line.charAt(i+1)!=' ')

进入

if( i>0 && line.charAt(i-1)!=' ' &&
    (i+1)<line.length() && line.charAt(i+1)!=' ')

同时添加

return koncan + "</pre>"

你也可以像这样使用 StringBuilder 来加速它:

StringBuilder konacan = new StringBuilder("<pre>");
konacan.append("<b>"+slovo);
return konacan.append("</pre>").toString();

【讨论】:

  • ...之前没有打印出异常?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-28
  • 1970-01-01
  • 2017-11-23
相关资源
最近更新 更多