2013-08-12 2 views
0

меня такие элементы, как это:скребковые только номер внутри строки

<span class="narrowValue">&nbsp;(15,728)</span> 

Что я выскабливание, как это:

@department_hash = Hash.new {|h,k| h[k]=[]} 
    department.css('.narrowValue').each do | department | 
    @department_hash["department"] << department.text 
    end 

и получить результаты, как это:

{"department"=>[" (15,725)", " (243,256)", " (510,337)", " (46,002)", " (14,109)", " (358)", " (5,787)", " (19,818)"]} 

Но мне не нужны скобки.

Как это сделать, чтобы получить только цифры?

ответ

1
@department_hash["department"] << department.text[/[\d,]+/] 
+0

+1 Простой ответ. Так что gsub не нужно? – alexchenco

+0

Да. Вам не нужен gsub. – sawa

1

Перед тем, как нанести текст на массив, скопируйте скобки.

@department_hash = Hash.new {|h,k| h[k]=[]} 
department.css('.narrowValue').each do | department | 
    @department_hash["department"] << department.text.gsub(/^[() \u00a0]+|[() \u00a0]+$/, '') 
end 

В качестве альтернативы вы можете использовать следующее регулярное выражение:

/^[()[:space:]]+|[()[:space:]]+$/ 

[[:space:]] Удачные NBSP, но \s не соответствует NBSP.

+0

странно, я попробовал, что и только одна скобка была удалена (первый). – alexchenco

+0

@alexchenco, вы использовали 'String # sub' вместо' String # gsub'? – falsetru

+0

Нет. Странный. Не уверен, что происходит. – alexchenco

1

Используйте следующую модификацию:

@department_hash["department"] << department.text.gsub(/[^\d,]/,"")