2015-05-13 8 views
0

У меня есть строка со специальными символами, которую я хочу заменить соответствующей ссылкой.Заменить специальные символы символьными ссылками в строке с помощью java

Например

InputString -> Hi <Nishanth> How &are you ! 
OutputString -> Hi &ltNishanth&gt How &ampare you &excl 

Я попытался использовать концепцию замены. Но я не мог достичь желаемого результата. Я хочу функцию, которая сделает это для меня на Java.

+4

вы забыли описать проблему вы имея и задавать вопрос. – Pshemo

+0

См. Рекомендации по [как задать хороший вопрос] (http://stackoverflow.com/help/how-to-ask) – screenmutt

+0

дубликат http://stackoverflow.com/questions/439298/best-way-to -encode-text-data-for-xml-in-java –

ответ

0

replaceAll должен уметь выполнять эту работу в полном порядке.

Во-первых, давайте сделаем быстрый класс кортеж представлять пару строк: строка для поиска и строку для замены, что с:

private static class StringTuple{ 
    private String k; 
    private String v; 

    public StringTuple(String one, String two){ 
     k = one; 
     v = two; 
    } 
} 

С, что мы можем создать список специальных символов для поиска и их соответствующих замен. Обратите внимание, что этот список будет использоваться в том порядке, в котором мы его создаем, поэтому важно заменить специальные символы, которые могут отображаться в других заменах в первую очередь (например, & или ;).

ArrayList<StringTuple> specialChars = new ArrayList<>(); 
specialChars.add(new StringTuple("&", "&amp;")); 
specialChars.add(new StringTuple("<", "&lt;")); 
specialChars.add(new StringTuple(">", "&gt;")); 

Наконец, мы можем написать функцию, которая перебирает список специальных символов и заменяет все вхождения с заменой строки:

public static String replaceSpecialChars(String s, ArrayList<StringTuple> specialChars){ 
    for(StringTuple e: specialChars){ 
     s = s.replaceAll(e.k, e.v); 
    } 
    return s; 
} 

Вот работоспособной основной основе от приведенного выше кода:

public static void main(String[] args) { 
    ArrayList<StringTuple> specialChars = new ArrayList<>(); 
    specialChars.add(new StringTuple("&", "&amp;")); 
    specialChars.add(new StringTuple("<", "&lt;")); 
    specialChars.add(new StringTuple(">", "&gt;")); 
    System.out.println(replaceSpecialChars("Hi <Nishanth> How are &you !", specialChars)); 
} 

Выход: Hi &lt;Nishanth&gt; How are &amp;you !

 Смежные вопросы

  • Нет связанных вопросов^_^