2014-10-31 3 views
0

Я следующие строки:Поиск подстроки из строки

Test: Testid #123123 - Updated 

Я хочу найти подстроку 123123 из этой строки.

Я пробовал: <msg>.substring(15, 21); Это дает мне правильный результат.

но я хочу найти эту подстроку так, чтобы она находила идентификатор между # и следующим пространством, не указав начальный и конечный индексы.

Спасибо.

ответ

2

Попробуйте это:

s.substring(s.indexOf("#")+1, s.indexOf(" ", s.indexOf("#")+1)) 

это дает вам строку запуска полукокса после # до следующей заготовки.

0

Просто разделите его на #, а затем разделите результат на - вы получите правильный результат.

2

Попробуйте это,

String text = "Test: Testid #123123 - Updated"; 
int startIndex = text.indexOf('#'); //Finds the first occurrence of '#' 
int endIndex = text.indexOf(' ',startIndex); //Finds the first occurrence of space starting from position of # 
String subString = text.substring(startIndex+1, endIndex); 
System.out.println(subString); 

Или попытаться использовать регулярное выражение

0

это может быть полезно ..

String temp="Test: Testid #123123 - Updated"; 
int _first=temp.indexOf("#"); 
int _last= temp.indexOf(" ", _first); 
String result=temp.substring(_first, _last); 
1

Если ваш пример действительно так просто, как тот, который вы даете, тогда вам не нужно будет использовать regular expressions , Однако, если ваш реальный ввод является более сложным, тогда регулярное выражение будет менее обременительным, чем попытка разбить строку умным способом.

import java.util.regex.*; 


public class Foo{ 
    public static void main(String[] args) { 
     String original = "Test: Testid #123123 - Updated"; 
      Pattern mypattern = Pattern.compile("#([0-9]*) "); 
     Matcher matcher = mypattern.matcher(original); 
     while (matcher.find()) { 
      System.out.println(matcher.group(1)); 
     } 
    } 
} 
0

Вы можете использовать следующий код, чтобы получить значение между '#' и пробелом.

String str = "Test: Testid #123123 - Updated"; 
str = str.substring(str.indexOf('#')+1, str.indexOf(' ', str.indexOf("#")+1)+1);