2015-12-24 1 views
4

Мне нужно извлечь нужную строку, прикрепленную к слову.Как получить нужный символ из строк с переменным размером?

Например

pot-1_Sam 
pot-22_Daniel 
pot_444_Jack 
pot_5434_Bill 

Мне нужно получить имена из вышеуказанных строк. Сэм, Дэниел, Джек и Билл. Вещь, если я использую подстроку, позиция продолжает меняться из-за длины числа. Как их использовать с помощью REGEX.

Update: Некоторых строки имеют 2 вариант подчеркивания как

pot_US-1_Sam 
pot_RUS_444_Jack 
+0

Является последним '_' показывает, что разыскиваемая строка теперь будет начать? – ParkerHalo

+0

@DineshRavi Еще мой ответ будет работать. :) –

ответ

3

Ваш ответ:

String[] s = new String[4]; 
s[0] = "pot-1_Sam"; 
s[1] = "pot-22_Daniel"; 
s[2] = "pot_444_Jack"; 
s[3] = "pot_5434_Bill"; 
ArrayList<String> result = new ArrayList<String>(); 
for (String value : s) { 
    String[] splitedArray = value.split("_"); 
    result.add(splitedArray[splitedArray.length-1]); 
} 

for(String resultingValue : result){ 
    System.out.println(resultingValue); 
} 
4

Если у вас есть стандартный набор выше форматов, кажется вам не нужно иметь какое-либо регулярное выражение, вы можете попробовать использовать lastIndexOf и substring методы.

String result = yourString.substring(yourString.lastIndexOf("_")+1, yourString.length()); 
1

Используйте текстовый токенизатор на основе '_' и получите последний элемент. Нет необходимости в REGEX.

Или использовать метод разделения на объект строки, как так:

String[] strArray = strValue.split("_"); 
    String lastToken = strArray[strArray.length -1];  
3

У вас есть 2 варианта:

  1. Продолжайте использовать метод indexOf, чтобы получить индекс последнего _ (This предполагает, что нет _ в именах, которые вы после). После этого у вас есть последний индекс символа _, вы можете использовать метод substring, чтобы получить бит, который вам нужен.

  2. Используйте регулярное выражение. Строки, которые вы указали, по существу, имеют шаблон, в котором у вас есть числа, а затем символ подчеркивания, который, в свою очередь, следует за словом, которым вы пользуетесь. Вы можете использовать регулярное выражение, такое как \\d+_ (которое будет соответствовать одной или нескольким цифрам с последующим подчеркиванием) в сочетании с методом split. Строка, в которой вы находитесь, будет находиться в последней позиции массива.

1
String[] s = { 
     "pot-1_Sam", 
     "pot-22_Daniel", 
     "pot_444_Jack", 
     "pot_5434_Bill" 
    }; 
    for (String e : s) 
     System.out.println(e.replaceAll(".*_", "")); 
Смежные вопросы