Как да премахнете префикс от низове в Groovy

1. Въведение

В този бърз урок ще научим как да премахнете префикса от низ в Groovy.

Първо ще разгледаме какво предлага класът String за тази цел. След това ще преминем към регулярните изрази и ще видим как можем да ги използваме, за да премахнем префикса.

2. Използване на низови методи

Като цяло Groovy се счита за динамичен език за екосистемата на Java. Следователно все още можем да използваме всеки метод на клас Java String заедно с нови Groovy. За премахването на префикса обаче все още липсва ясен метод като removePrefix () .

Премахването на префикс от низовете на Groovy се състои от две стъпки: първо потвърждение и след това премахване . И двете стъпки могат да бъдат изпълнени с помощта на класа StringGroovyMethods, който предлага много полезни методи за манипулации на низове.

2.1. startWith () Метод

Методът startWith () проверява дали низът започва с определен префикс. Той връща true, ако префиксът съществува, а false по друг начин.

Нека започнем с грубо затваряне:

@Test public void whenCasePrefixIsRemoved_thenReturnTrue(){ def trimPrefix = { it.startsWith('Groovy-') ? it.minus('Groovy-') : it } def actual = trimPrefix("Groovy-Tutorials at Baeldung") def expected = "Tutorials at Baeldung" assertEquals(expected, actual) } 

След като съществуването е потвърдено, тогава можем да използваме и метода substring () , за да го премахнем:

trimPrefix.substring('Groovy-'.length()) 

2.2. startsWithIgnoreCase () Метод

Методът startWith () чувствителен е към регистъра . Така че са необходими ръчни усилия, за да се отмени ефектът от случая или чрез прилагане на методите toLowerCase () или toUpperCase () .

Както подсказва името, startWithIgnoreCase () търси префикс без разглеждане на случая. Той връща true, ако съществува префикс, и false в противен случай.

Нека да разгледаме как да използваме този метод:

@Test public void whenPrefixIsRemovedWithIgnoreCase_thenReturnTrue() { String prefix = "groovy-" String trimPrefix = "Groovy-Tutorials at Baeldung" def actual if(trimPrefix.startsWithIgnoreCase(prefix)) { actual = trimPrefix.substring(prefix.length()) } def expected = "Tutorials at Baeldung" assertEquals(expected, actual) } 

2.3. startsWithAny () Метод

Горните решения са полезни, когато трябва да проверим само един префикс. Що се отнася до проверката на множество префикси, Groovy също така осигурява поддръжка за проверка на множество префикси.

Методът startWithAny () проверява дали CharSequence започва с някакви посочени префикси. След като префиксът бъде потвърден, можем да приложим логика според изискванията:

String trimPrefix = "Groovy-Tutorials at Baeldung" if (trimPrefix.startsWithAny("Java", "Groovy", "Linux")) { // logic to remove prefix } 

3. Използване на Regex

Регулярният израз е мощен начин за съвпадение или замяна на шаблон. Groovy има оператор на шаблон ~, който осигурява лесен начин за създаване на екземпляр java.util.regex.Pattern .

Нека дефинираме прост регулярен израз, за ​​да премахнем префикса:

@Test public void whenPrefixIsRemovedUsingRegex_thenReturnTrue() { def regex = ~"^groovy-" String trimPrefix = "groovy-Tutorials at Baeldung" String actual = trimPrefix - regex def expected = "Tutorials at Baeldung" assertEquals("Tutorials at Baeldung", actual) } 

Версията на горния регулаторен израз, без значение на регистъра:

def regex = ~"^([Gg])roovy-" 

Операторът на карета ^ ще се увери, че посоченият подниз съществува в началото.

3.1. replaceFirst () Метод

Използвайки регулярни изрази заедно с методите на родните низове, можем да изпълняваме много мощни трикове. Методът replaceFirst () е един от тези методи. Той замества първата поява, която съответства на дадения регулярен израз.

Нека премахнем префикс, като използваме метода replaceFirst () :

@Test public void whenPrefixIsRemovedUsingReplaceFirst_thenReturnTrue() { def regex = ~"^groovy" String trimPrefix = "groovyTutorials at Baeldung's groovy page" String actual = trimPrefix.replaceFirst(regex, "") def expected = "Tutorials at Baeldung's groovy page" assertEquals(expected, actual) } 

3.2. replaceAll () Метод

Подобно на replaceFirst () , replaceAll () също приема регулярен израз и е получил заместване. Той замества всеки подниз, който отговаря на дадените критерии . За да премахнем префикс, можем да използваме и този метод.

Нека използваме replaceAll (), за да заменим подниза само в началото на низа:

@Test public void whenPrefixIsRemovedUsingReplaceAll_thenReturnTrue() { String trimPrefix = "groovyTutorials at Baeldung groovy" String actual = trimPrefix.replaceAll(/^groovy/, "") def expected = "Tutorials at Baeldung groovy" assertEquals(expected, actual) } 

4. Заключение

В този бърз урок разгледахме няколко начина за премахване на префиксите от низ. За да потвърдим съществуването на префикс, видяхме как да направим това както за главни, така и за малки букви.

В същото време видяхме как да открием префикс сред много предоставени поднизове. Също така разгледахме множество методи, които могат да се използват за премахване на подниз. И накрая, накратко обсъдихме ролята на регулярните изрази за тази цел.

Както винаги, всички примери за кодове могат да бъдат намерени в GitHub.