2014-01-18 2 views
0

В настоящее время я использую следующий код, чтобы удалить определенные символы из строки в массивеПропустив первый символ REGEX

myArray[x] = myArray[x].replaceAll("[aeiou]",""); 

, который прекрасно работает, но мне нужно, чтобы игнорировать первый символ строки так, например, если элемент массива был Alan, он был бы лишен Aln.

Я не уверен, что использование метода replaceAll - лучший способ сделать это, но единственный способ, которым я могу думать, - удалить первый символ, применив указанное выше регулярное выражение к строке, добавив символ обратно, а затем вставляя обратно в массив, что, кажется, длинный извилистый способ сделать это.

+0

Что движок регулярных выражений вы используете? Похож на Java? Если так, добавьте это в теги. Различные двигатели поддерживают различные функции. –

ответ

1

Вы можете использовать отрицательное 'назад утверждать, что картина не предшествует начальной линии маркера (^):

public static void main(String[] args) throws Exception { 
    final String[] input = {"abe", "bae"}; 
    for(final String s: input) { 
     System.out.println(s.replaceAll("(?<!^)[aeiou]", "")); 
    } 
} 

Выход:

ab 
b 
+0

Действительно, это я хотел показать. Негативный взгляд. – Miraage

+0

именно то, что я искал благодаря – user3210665

1

А что-то вроде ..

myArray[x] = myArray[x].replaceAll("(^.)[aeiou]", "\\1");

// обн

Отрицательный просмотра назад ваше решение, как Борис ответил.

+0

Если это Java, вам нужно использовать '\\ 1', иначе это не будет компилироваться. –

+0

Я не Java dev, поэтому я хотел указать первый «карман». – Miraage

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