В тази статия ще разгледаме подмяна и отстраняване на дублиращи знаци в низ посредством Java регулярни изрази.
Замяна и премахване на дублиращи се герои ще бъдат във функцията на класа String замяна.
Класът String има четири метода за подмяна характер. Това са подписите си:
- замени (Чар oldChar, знак newChar): String
- замени (целева CharSequence, CharSequence подмяна): String
- replaceAll (String регулярен, String подмяна): String
- replaceFirst (String регулярен, String подмяна): String
Първите две методи в този случай не са полезни, тъй като те трябва да се замени един символ (знак) на друг знак или поредица от символи (CharSequence) в друга последователност. CharSequence - интерфейс, който се изпълнява от класа: String, StringBuilder и StringBuffer.
Нека се спрем на последните два метода: replaceAll и replaceFirst. И двата метода първи параметър се регулярен израз (регулярен израз), а втората смяна параметър текст (подмяна). replaceAll - замени всички мачове, replaceFirst замества само първата минута. replaceAll да се използва само тази статия.
- Представете си следния проблем: искате да изтриете всички редове, застанали до две от един и същ характер. Така например, от «keeshh» линията трябва в крайна сметка да се окаже, линия «к»
String текст = "keeshh"; String резултат = text.replaceAll ( "([A-Z]) \\ 1" ""); System.out.println (резултат); // "к"
replaceAll - функция, за да замени всички мачове
[A-Z] - експресия показва, че това място трябва да бъде характер в диапазона от А до Z.
() - скоби показват групата, която може да се отнася до по брой, номерацията започва в един
\ 1 - показва, че в този момент трябва да бъде един и същ текст, както в група номер 1. Обратната наклонена черта "\" трябва да се избяга, така че от гледна точка на две наклонени черти "\\"
Например, ако «keeshhs» линия, подмяна на два последователни повтарящи се знаци, тя ще се превърне «KSS», но подниз «СС» също могат да бъдат отстранени. Поставете кода по-горе в един цикъл, който се повтаря дотогава, докато не ще бъде заменен всички повтарящи се символи. В това изпълнение, ще се опитаме да изтриете повторение, докато се промени (съкратено) Дължина на низ
String = "текст keeshhs"; Int лен; правя
Например, за «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 (текст); // "Кеш"
Използване на регулярни изрази, за да пиша по-компактен код, а вероятно и спести време на снимачната площадка на код, ако е добре да се научите на регулярни изрази.