2013-06-20 2 views
1

Я читал [это] [1] и [это] [2], но они не совсем ответили на мой вопрос.Полоса окончания набора круглых скобок из строки

Предположим, у меня есть следующее название продукта & код:

Cool Product 9000 (CP9000)

Я хочу содрать последнее место и все, после того, как он просто не останется:

Cool Product 9000

Как я могу это сделать?

И если вы знаете руководство или учебник, которые бы объяснили это, не стесняйтесь просто указать мне на это.

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

ответ

2

То же подход OMG, но изменения s себя:

s = 'Cool Product 9000 (CP9000)' 
s[s.rindex(' ')..-1] = '' 

s 
# => "Cool Product 9000" 
5

Это должно сделать:

string.sub!(/\s+\S*$/, '') 

Но, благости скобки, вы также можете сделать:

string.sub!(/\s+\(.*?$/, '') 

и он будет ловить (и не поймать) примеры, приведенные ниже @Phrogz :

foo bar baz 

не будут изменены и

foo bar (bar baz) 

будет превращен в

foo bar 
+1

ОП прямо сказал << Я хочу, чтобы содрать последнее место и все, после того, как он просто не останется >> – Massa

+0

'+ 1', поскольку я не люблю угадывать больше, когда ОП уже упоминает его/ее требование. –

+0

Моя ошибка, Масса.+1 :) Я был введен в заблуждение от несоответствия между заголовком вопроса и образцами данных и этим предложением. Я удалил свой пренебрежительный (и неверный) комментарий. – Phrogz

1
stripped = string.sub /\s*\([^)]+\)\z/, '' 

Это говорит:

  • Найти некоторые необязательные пробелы \s*
  • ... за которыми следует открывающей скобкой \(
  • ... Fol мычала одним или более символов, которые не являются буквальным закрывающей скобкой [^)]+
  • ... за которыми следует закрывающей скобкой \)
  • ... а затем к концу строки \z

и заменить его ничем.

+0

используйте недобросовестную квалификацию, Люк! '/ \ s * \ (. *? \) \ z /': D – Massa

+0

@Massa - То же самое происходит, но в целом из-за обратного отслеживания работает хуже. – pguardiario

3
s = 'Cool Product 9000 (CP9000)' 
s[0...s.rindex(" ")] 
# => "Cool Product 9000" 
Смежные вопросы