ПредишенСледващото

В тази статия ще разгледаме подмяна и отстраняване на дублиращи знаци в низ посредством Java регулярни изрази.
Замяна и премахване на дублиращи се герои ще бъдат във функцията на класа String замяна.
Класът String има четири метода за подмяна характер. Това са подписите си:

  1. замени (Чар oldChar, знак newChar): String
  2. замени (целева CharSequence, CharSequence подмяна): String
  3. replaceAll (String регулярен, String подмяна): String
  4. replaceFirst (String регулярен, String подмяна): String

Първите две методи в този случай не са полезни, тъй като те трябва да се замени един символ (знак) на друг знак или поредица от символи (CharSequence) в друга последователност. CharSequence - интерфейс, който се изпълнява от класа: String, StringBuilder и StringBuffer.
Нека се спрем на последните два метода: replaceAll и replaceFirst. И двата метода първи параметър се регулярен израз (регулярен израз), а втората смяна параметър текст (подмяна). replaceAll - замени всички мачове, replaceFirst замества само първата минута. replaceAll да се използва само тази статия.

  1. Представете си следния проблем: искате да изтриете всички редове, застанали до две от един и същ характер. Така например, от «keeshh» линията трябва в крайна сметка да се окаже, линия «к»

String текст = "keeshh"; String резултат = text.replaceAll ( "([A-Z]) \\ 1" ""); System.out.println (резултат); // "к"

replaceAll - функция, за да замени всички мачове
[A-Z] - експресия показва, че това място трябва да бъде характер в диапазона от А до Z.
() - скоби показват групата, която може да се отнася до по брой, номерацията започва в един
\ 1 - показва, че в този момент трябва да бъде един и същ текст, както в група номер 1. Обратната наклонена черта "\" трябва да се избяга, така че от гледна точка на две наклонени черти "\\"

  • След отстраняване може да се образува от две повтарящи символи отново повтаря символи.
    Например, ако «keeshhs» линия, подмяна на два последователни повтарящи се знаци, тя ще се превърне «KSS», но подниз «СС» също могат да бъдат отстранени. Поставете кода по-горе в един цикъл, който се повтаря дотогава, докато не ще бъде заменен всички повтарящи се символи. В това изпълнение, ще се опитаме да изтриете повторение, докато се промени (съкратено) Дължина на низ

    String = "текст keeshhs"; Int лен; правядокато (LEN = text.length ()!); // сравни новата дължина низ със съхранена System.out.println (текст) дължина; // "к"

  • Да разгледаме следния пример. Необходимо е да се премахнат всички последователни повтарящи се знаци.
    Например, за «keeeshh» линии се оказва по «к». Изпълнение:

    Както може би сте забелязали, след edinichki добавя + характер. Плюс редовните означава, че предходната плюс символа или група трябва да отговарят на един или повече пъти. Можете също да включите този код в примката, за да замени отново се появи повторение.

  • Сега помислете за замяна. Цел: Да се ​​има низ, трябва два последователни еднакви знаци, за да остави само една.
    Пример: от «kkeesshh» линия ще се подредят «Кеш».
    Изпълнение:

    String текст = "kkeesshh"; текст = text.replaceAll ( "([A-Z]) \\ 1", "$ 1"); System.out.println (текст); // "Кеш"

    За замяна, ние използвахме израза $ 1. която се казва, че текстът, който съвпада с регулярен израз трябва да се заменя с текст, съответстващ на група номер 1. В този случай, групирането с редица - това е текст, който съответства на модела [A-Z].
    Ние можем да пренапише кода, използвайки номера на група 2 чрез замяна

    String текст = "kkeesshh"; текст = text.replaceAll ( "([A-Z]) (\\ 1)", "$ 2"); System.out.println (текст); // "Кеш"

    Втората група съответства на модела \\ 1

  • И накрая, ние замени линия всичко повтарящи се знаци, един знак.
    Така например, низ «keeeeessshh» на превръща в «Кеш».
    Изпълнение:

    String текст = "keeeeessshh"; текст = text.replaceAll ( "([A-Z]) \\ 1+", "$ 1"); System.out.println (текст); // "Кеш"

    Използване на регулярни изрази, за да пиша по-компактен код, а вероятно и спести време на снимачната площадка на код, ако е добре да се научите на регулярни изрази.

  • Подкрепете проекта - споделете линка, благодаря!