2009-04-14 4 views
1

text 페이지에 인쇄하고 싶지만 인쇄하기를 원한다면 첫 번째 100 단어를 말하십시오.이 작업을 수행하는 가장 쉬운 방법은 무엇입니까?텍스트 요약

+1

나는 "가리는"당신이 원하는 단어 아니라고 확신 해요. "천박한"것을 의미하지만 천문학적 인 의미에서만 그렇습니다. 당신이 좋아하지 않는 "줄임표"는 3 도트의 이름입니다. "..." –

+0

줄임표는 정말로 * 찾고있는 단어입니다. – iandotkelly

답변

5

는 시작에 대한이 방법은 다음과 같습니다

def first_words(s, n) 
    a = s.split(/\s/) # or /[ ]+/ to only split on spaces 
    a[0...n].join(' ') + (a.size > n ? '...' : '') 
end 

s = "The quick brown fox jumps over the lazy dog. " * 20 

puts "#{s.size}, #{s.split(/\s/).size}" 
#-> 900, 180 

puts first_words(s, 10) 
#-> The quick brown fox jumps over the lazy dog. The... 

puts first_words("a b c d", 10) 
#-> a b c d 
+0

이것은 내 새 줄을 제거하는 것 같습니다. 나는 그들을 어떻게 지켜야합니까? – alamodey

+0

아. \ s는 개행 문자를 포함하는 "공백"과 일치합니다. 둘 이상의 공백이있을 수있는 경우// s /를// (한 공간) 또는/[] +/(하나 이상의 공백과 일치)로 변경하십시오. –

1

당신은 몇 가지 옵션이 있습니다, 하나의 방법은 당신이 추가, 그 길이의 문자열을 다음 단어 N 문자라고 말할 및 수있는 ellipsis을 끝에 붙여서 표시하십시오. 또는 문자열을 실행하고 공백 수를 계산할 수 있습니다. 각 단어 사이에 공백이 하나만 있다고 가정하면 100 번째 공백이 100 번째 단어 뒤에오고 줄임표를 추가하면 완료됩니다.

더 나은 성능을 가진 것은 아마도 함수 작성 방법에 따라 달라질 수 있습니다. 대부분의 경우 하위 문자열 작업은 공백을 계산하는 것보다 빠릅니다. 그러나 성능 차이는 미미할 수 있습니다. 이렇게 많이하지 않으면 공간을 계산하는 것이 가장 정확한 방법 일 수 있습니다.

또한 참조 용으로 영어 단어의 평균 길이는 is 5.1 characters입니다.