텍스트의 부분 문자열을 얻는 방법?


172

길이가 ~ 700 인 텍스트가 있습니다. 첫 번째 문자의 ~ 30 만 얻는 방법은 무엇입니까?

답변:



207

String#slice별칭이 지정된를 사용하십시오 [].

a = "hello there"
a[1]                   #=> "e"
a[1,3]                 #=> "ell"
a[1..3]                #=> "ell"
a[6..-1]               #=> "there"
a[-3,2]                #=> "er"
a[-4..-2]              #=> "her"
a[12..-1]              #=> nil
a[-2..-4]              #=> ""
a[/[aeiou](.)\1/]      #=> "ell"
a[/[aeiou](.)\1/, 0]   #=> "ell"
a[/[aeiou](.)\1/, 1]   #=> "l"
a[/[aeiou](.)\1/, 2]   #=> nil
a["lo"]                #=> "lo"
a["bye"]               #=> nil

31
명확하게하려면 -1문자열의 끝에 도달하는 데 사용됩니다 a[1..-1] #=> "ello there".
Joshua Pinter

5
이것은 일부에게는 명백 할 수 있지만 부정적인 위치에 쉼표를 사용하는 것은 좋지 않습니다a[-4,-2] . 유일하게 유효한 표기법은 두 개의 점 a[-4..-2]입니다. 어려운 방법을 배웠습니다.
cavpollo

24

Rails에 태그를 지정 했으므로 잘라내기를 사용할 수 있습니다.

http://api.rubyonrails.org/classes/ActionView/Helpers/TextHelper.html#method-i-truncate

예:

 truncate(@text, :length => 17)

발췌문도 알아두면 좋을 것입니다. 텍스트의 발췌문을 표시 할 수 있습니다.

 excerpt('This is an example', 'an', :radius => 5)
 # => ...s is an exam...

http://api.rubyonrails.org/classes/ActionView/Helpers/TextHelper.html#method-i-excerpt


9
루비는 레일즈가 아닙니다.
Joó Ádám

@ JoóÁdám 태그는 Andrew Marshall에 의해 변경되었습니다
apneadiving

변화에 대한 정당성이 있었습니까? OP가 Rails에서 작동하고 Rails에서 솔루션을 요청하면 질문에 Rails 태그가 지정되어야합니다. 그리고 당신의 대답은 의미가 있습니다.
Joó Ádám

@ JoóÁdám 문제는, 영업에 의한 레일 태그 된이 시점 이잖아
apneadiving

알았는데 왜 태그가 제거되었는지 알 수 없습니다. 질문을 편집하고 Rails에 관한 내용을 분명히했습니다. 검토 대기 중입니다.
Joó Ádám

12

레일에 필요한 경우 먼저 사용할 수 있습니다 ( 소스 코드 )

'1234567890'.first(5) # => "12345"

또한 마지막이있다 ( 소스 코드 )

'1234567890'.last(2) # => "90"

또는 소스 확인하십시오 ( 소스 코드 ).

"hello".from(1).to(-2) # => "ell"

NoMethodError: undefined method `first' for "abcde":String레일 구현입니까?
Tiw

그렇습니다. 하지만 내가 게시 한 소스 코드 양식 링크를 복사 할 수도 있습니다
Aray Karjauv

0

문자열을 원한다면 다른 대답은 괜찮지 만 문자로 처음 몇 글자를 찾으면 목록으로 액세스 할 수 있습니다.

your_text.chars.take(30)
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.