Замена строки Java - PullRequest
       4

Замена строки Java

0 голосов
/ 22 февраля 2012

У меня есть такая строка в файле

<script>
Evening</script>

Я написал код для замены этой строки, но он не идентифицирует символ новой строки i, e.Я хочу заменить вышеуказанную строку на:

<h1>Done</h1>

код выглядит так:

package stringreplace;
import java.io.*;

import org.omg.CORBA.Request;

public class stringreplace {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        FileReader fr = null;
        BufferedReader br = null;

        try
        {
             fr = new FileReader("G://abc.html");
             br = new BufferedReader(fr);

             String newtext="";
             String line="";

             String matchExist1 = "<script>\r\nEvening</script>";
             String newpattern = "<h1>Done</h1>";

             String matchExist2 = "</body>";
             String newpattern2 = "<script>alpha</script></body>";

             StringBuffer sb = new StringBuffer();

             while((line=br.readLine())!=null)
             {
                int ind2 = line.indexOf(matchExist1);
                System.out.println(ind2);
                int ind3 = line.indexOf(matchExist2);
                if((ind2==-1) || (ind3==-1))
                 {
                    line = line.replaceFirst(matchExist1,newpattern);
                    line = line.replaceFirst(matchExist2,newpattern2);
                    sb.append(line+"\n");   
                 }
                //sb.append(line+"\n");
                else if((ind2!=-1) || (ind3!=-1))
                 {
                    String tag = "</body>";
                    line = line.replaceFirst("</body>",tag);
                    sb.append(line+"\n");
                 }
            }
             br.close();

             FileWriter fw = new FileWriter("G://abc.html");
             fw.write(sb.toString());
             fw.close();

             System.out.println("done");
             System.out.println(sb);

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

    }

}

Но это не идентификация символа новой строки.

Ответы [ 2 ]

3 голосов
/ 22 февраля 2012

Поскольку вы читаете только одну входную строку за раз, вряд ли можно ожидать совпадения с шаблоном, который занимает две строки. Сначала необходимо исправить чтение, чтобы в нем было как минимум две строки. Как только вы это сделаете, ответ @ sterna поможет вам

1 голос
/ 22 февраля 2012

Я думаю, вы не можете быть уверены в том, как выглядит ваша новая строка. Так что я бы не совпал для конкретной последовательности, вместо этого используйте \s+, это как минимум один пробельный символ, и все символы новой строки включены.

String matchExist1 = "<script>\\s+Evening</script>";

Edit:
Конечно, сначала вы должны исправить описанную проблему mgc (+1) . И тогда вы можете использовать мой ответ!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...