Как заменить текст шаблона на другой текст, содержащий элементы основного текста - PullRequest
0 голосов
/ 03 апреля 2012

Я хочу заменить некоторый текст другим текстом, который содержит элементы основного текста.

Например:

text text
blabla HYPERLINK "mailto:x@x.com"x@x.com
text text

Я хочу заменить HYPERLINK "mailto:x@x.com"x@x.com to <a href="x@x.com">x@x.com</a>

Таким образом, результат должен быть:

text text
blabla <a href="x@x.com">x@x.com</a>
text text

Как я могу сделать это с помощью Java?

Ответы [ 2 ]

2 голосов
/ 03 апреля 2012

Это помогло ... (хороший вызов: -))

public static void parse() {
    Pattern p = Pattern.compile("(.*)HYPERLINK \"mailto:(.*)\"(\\S*)(.*)");
    Matcher m = p.matcher("blabla HYPERLINK \"mailto:x@x.com\"x@x.com");
    if (m.matches()) {
        String processed = m.group(1) + "<a href=\"" + m.group(2) + "\">" + m.group(3) + "</a>" + m.group(4);
        System.out.println(processed);
    }
}
2 голосов
/ 03 апреля 2012

Вот как вы могли бы сделать это:

String str = "text text\n" +
    "blabla HYPERLINK \"mailto:x@x.com\"x@x.com\n" +
    "text text";

str = str.replaceAll("HYPERLINK \\\"mailto:(.*?)\\\"\\1", "<a href=\"$1\">$1</a>");     
System.out.println(str);

РЕДАКТИРОВАТЬ:

Вы могли бы взять реплику из уценки гиперссылки, используемой здесь в SO, и сделать следующее для более обобщенного решения:

String str = 
    "text text\n" +
    "blabla (mailto:x@x.com)[this email] or (mailto:x@y.com)[x@y.com]\n" +
    "text (http://www.google.com/)[this is google] text";

str = str.replaceAll("\\((.*?)\\)\\[(.*?)\\]", "<a href=\"$1\">$2</a>");       
System.out.println(str);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...