2017-02-21 16 views
-2

У меня есть требование, что у меня есть строка, подобная приведенной ниже, и мне нужна строка, как показано ниже. Кто-нибудь может мне помочь, пожалуйста ?val a = month (start_date), year (to date)

пример 1

val input = "month(start_date),year(to_date),month(to_date)" 

output = "start_date,to-date" 

пример 2

input = "abc(start),xyz(end)" 

output = "start,end" 
+0

является массивом вашего входного символа? например, «val input =» month (start_date), year (to_date), month (to_date) »,« Какой тип? – prayagupd

+0

как мои входные, так и выходные данные являются «String» – sruthi

+1

, вы можете указать пример ввода, например, «val input =» month (1989), year (2017), month (2017) »,« valid »? – prayagupd

ответ

1

Вам нужно регулярное выражение, чтобы получить значение внутри скобок

val input = "month(start_date),year(to_date),month(to_date)" 
val regex = "(?<=\\()[^)]+(?=\\))".r 
val output = regex.findAllIn(input).toSet.mkString(",") 

для регулярных выражений объяснения вы можете найти его здесь How do I match the contents of parenthesis in a scala regular expression

toSet удалить дублированный и mkString присоединиться к сету с запятой

+0

Awesome, отлично работает, спасибо за вашу помощь – sruthi

+0

Привет, Сегодня я столкнулся с еще одной проблемой. Моя строка похожа на ниже. Не могли бы вы помочь в этом val input = "month (start_date), year (to_date), month (to_date), name, number" output = "start_date, to_date, name, number" – sruthi

+0

Я думаю, что регулярное выражение все еще возможно, но оно может быть слишком сложным, чтобы он был простым, может быть «split» («,») 'then do if-else stuff – izht

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

  • Нет связанных вопросов^_^