2013-09-25 2 views
-2

У меня есть строка, которая содержит «имя таблицы», которое я хотел бы извлечь из этой строки. В основном из этой строки ниже я хотел бы просто захватить «test_table». Строка всегда обозначает «Table name =», но у меня возникают проблемы с хождением по этой строке и вытаскиванием нужного мне имени таблицы.Java Parsing String для значения после

Мне нужно захватить каждый шар, пока я не запрутаю, но у меня проблемы. Примерная строка выглядит так:

{newModel=Table name=test_table, nameInSource=null, uuid=tid:f1f46c57b618-b9a0d09f-00000001}model 

Заранее спасибо.

+1

что неприятности вы с? –

+1

вы пробовали какой-то код? Вставляем. – guisantogui

+0

вы можете попытаться разобрать, что в ключ/значение, например, или просто пойти и заставить его с помощью Патти rn, что вы знаете, indexOf «Имя таблицы =» и получить значение для следующего indexOf »,« – porfiriopartida

ответ

0

Используйте регулярное выражение с соответствующей группой вокруг части, которую вы хотите. В приведенном ниже примере ищет подстроку Table name= в целевой строке, затем захватывает каждый символ, пока не найдет запятую в нумерации группы. Наконец, если шаблон был найден, он возвращает символы в первой группе или «null».

public static String parseTableName(String s) {        
    Pattern p = Pattern.compile("Table name=([^,]*)");       
    Matcher m = p.matcher(s);             
    return m.find() ? m.group(1) : null;          
}                   

// ... 
parseTableName(yourString); // => "test_table" 
0

Что вы пытаетесь? Существует несколько подходов:

Вы можете использовать регулярное выражение для соответствия шаблону key = value, чтобы вытащить его таким образом.

Вы также можете использовать JSON, который является более стандартным для синтаксического анализа (для этого требуется множество библиотек).

Вы можете вырезать символы { , } и сделать строку раскол на =

+0

Я изначально использовал indexOF, но не использовал шаблон регулярных выражений, который Maerics опубликовал ниже. Всем спасибо. – user2816352

0

В вашем образце она на самом деле выглядит как ключ ваш ищет это «имя» не «Имя таблицы» (где «таблица» является значением предыдущего ключа «newModel». В любом случае, есть много способов сделать это в Java. Предполагая, что вы не знаете порядок ключей/значений в строке, я бы использовал StringTokenizer, чтобы разбить его запятыми, а затем прокрутить каждую клавишу, чтобы увидеть, что это «имя», а затем использовать

String tableName; 

StringTokenizer st = new StringTokenizer(in, ","); 
while(st.hasMoreTokens()) { 
    String myString= st.nextToken(); 
    if (myString.startsWith("name") { 
     tableName=myString.substr(myString.charAt("="), myString.length()+2); 
    } 
    break; 
}