如何拆分,删除列中的部分数据;

时间:2011-09-18 04:34:11

标签: ruby string

我正在使用Spreadsheet gem。

我的代码是:

book = Spreadsheet.open 'excel-file.xls'
sheet = book.worksheet 0
book.write 'output-file.xls'

我想删除列中“;”之后的数据:

FULTON BANK NA;FULTON BANK

我只想让它成为FULTON BANK NA

另外,我想保留这样的价格数据:$78,000.00并想要剥离 来自特定列的所有其他数据:

MORTGAGE - CORPORATE;($78,000.00)

我只想让它成为$78,000.00

1 个答案:

答案 0 :(得分:2)

你可以这样做:

s = 'FULTON BANK NA;FULTON BANK'
s = s[/[^;]+/]

将在s中的第一个分号之前离开。或者你可以这样:

s = s.split(';')[0]

或者

s.gsub!(/;.*/, '')  # This modifies s in place

对于第二个,它取决于您的数据格式,但您可以从这开始:

s = 'MORTGAGE - CORPORATE;($78,000.00)'
s = s[/\(([^)]+)\)/, 1]

或者,如果最后一个组件可能有或没有括号,您可以这样做:

s = s.split(';')[-1].tr('()', '')

这会将s拆分为分号(split(';')),取最后一个组件([-1]),然后删除其中的任何括号(.tr('()', '')