2014-02-12 65 views
1

我有一个字符串像这样:首次出现非字母字符时打破字符串?

asdf.123 
asdf_123 
asdf123 
as123df 

我怎么可能分裂的任何非字母字符得到这个:

asdf 
asdf 
asdf 
as 
+0

你想之后的任何删除文本非字符?或者只是删除非字母字符 –

+0

@NitinJ是的。所以'as123df'应该返回'as'。 –

回答

8

你可以使用String#[]方法:

regexp = /^[a-z]+/i 

'asdf.123'[regexp] 
# => "asdf" 

'as123df'[regexp] 
# => "as" 

'ASas123'[regexp] 
# => "ASas" 
+0

这将不会照顾字符在Uppper情况下[A-Z] –

+0

:)检查工作。不知道为什么;) –

+0

由于“i”修饰符,如[文字文档](http://www.ruby-doc.org/core-2.1.0/doc/syntax/literals_rdoc.html#label -Regular +表达式)。 – toro2k

0

你可以简单地只使用gsub(/\W+/, '')用替换所有的非字母字符正则表达式...

+0

但是,在达到非alpha字符后,我不想要任何字母。所以'as123df'应该返回'as'。 –

+0

我明白了。然后@Logan塞尔曼的分裂方法将是最好的... – Jason

5
"your string".split(/[^A-Za-z]/).first 

将由任何不是AZ或az分裂,然后返回第一个结果。

+0

谢谢你的作品。 –

0

你可以简单地做:

a = "string 1232" 
    a[/[a-zA-Z]+/] 
    # => "string" 
0

这会为你工作"aaas._123ff".gsub!(/[^a-zA-Z].*/, '')

=> "aaas" 
+0

可以使用'sub'而不是'gsub',我不会亲自建议破坏性地改变原始字符串。 – Phrogz

+0

@Progro我会记住这一点:) –