回答
使用正則表達式(String#sub
):
str = "This is a really good morning\n "
str.sub(/[ \t]+\z/, '') # `[ \t]+\z` matches spaces, tabs at the end of the string.
# => "This is a really good morning\n"
如果你只想刪除多個空格(2個或更多):
str.sub(/[ \t]{2,}\z/, '')
# => "This is a really good morning\n"
哦,我明白了,這很好,我想進一步問一下,美元符號的含義是什麼? – LuminaChen 2014-10-12 04:03:05
如果你打算把'$'作爲字符串的結尾,那麼使用'gsub'有什麼意義? – sawa 2014-10-12 04:24:14
@sawa,啊。你是對的。 'sub'已經夠了。謝謝你指出。相應地更新了答案。 – falsetru 2014-10-12 04:26:33
的問題是不明確的。以下是我承擔,但其他的解釋是可能的:
如果最後一個非空白字符是字符串的最後一個字符,返回字符串;
否則,如果最後一個非空白字符後面的空白不包含換行符(「\ n」),則去掉尾隨的空格;
否則將緊隨最後一個非空白字符的第一個換行符後面的尾隨空白字符去掉。
這些假設的一個結果是,任何非空白字符後面的換行符被視爲與非空白字符相同。
這一個來實現這些假設的方法:
def strip_it(str)
len = str.strip.size
i = str[len..-1].index("\n")
i ? str[0,len+i+1] : str.rstrip
end
一些例子:
strip_it "This is a really good morning\n "
#=> "This is a really good morning\n"
strip_it "This is a really good morning \n "
#=> "This is a really good morning \n"
strip_it "This is a really good morning"
#=> "This is a really good morning"
strip_it "This is a really good morning\n cat "
#=> "This is a really good morning\n cat"
strip_it "This is a really good morning\n cat\n "
#=> "This is a really good morning\n cat\n"
strip_it "This is a really good morning\n cat \n "
#=> "This is a really good morning\n cat \n"
strip_it "This is a really good morning\n cat \n dog \n "
#=> "This is a really good morning\n cat \n dog \n"
Lumina的,它可能看起來像I'm dancing on the head of a pin,但我走進一些細節的原因之一是顯示你爲什麼有必要精確地陳述假設和要求。在實際應用中,當需求不明確時,災難即將到來。
問題不明確。如果它意味着如果有任何線路中斷,那麼這個答案可能會添加一個不需要的。 – sawa 2014-10-12 04:13:25
@sawa,這也發生在我身上,所以我編輯了。在第一個換行符之前,我也擔心可能的空白區域。 – 2014-10-12 04:30:51
我想,我需要做很多事情。 – LuminaChen 2014-10-12 05:04:43
- 1. 刪除換行和空格
- 2. 刪除多行空格
- 3. 刪除多個空格
- 4. 刪除前導空格和替換多個空格
- 5. 刪除多個空格和換行字符串
- 6. QRegExp刪除換行符和多個空格
- 7. preg_match刪除空格接受換行符
- 8. 刪除換行符和空格
- 9. 刪除多個換行符
- 10. 刪除/替換多行字符串中的所有空格,除了換行符
- 11. 刪除VIM中多行的空格
- 12. 縮放後刪除空格
- 13. java刪除空格也刪除空格後的所有內容
- 14. 刪除空格,但最後刪除空格嗎?
- 15. 刪除Javascript中的所有多個空格,並用單個空格替換
- 16. 刪除單個換行,保持「空」行
- 17. 刪除多餘的空格
- 18. PHP標記,刪除多個空格
- 19. 「find」刪除bash中的多個空格
- 20. 正則表達式在HTML標記中刪除多個空格和換行符
- 21. Excel VBA刪除後刪除空白行
- 22. 用一個空格替換所有多空格字符除了換行符
- 23. 從文本文件中刪除換行符前的一個或多個空格
- 24. 在Outlook中刪除前後空格
- 25. 在HTML中刪除div後的空格
- 26. XSL在轉換後刪除空元素
- 27. 從網格刪除空行
- 28. 刪除表格的空行
- 29. 從行尾刪除空格
- 30. 刪除多個空格字符之前和之後PHP
如果只有一個這樣的字符,你不想刪除它們嗎? – sawa 2014-10-12 04:15:34
@sawa 不,我不想這樣做,因爲實際上我的字符串不僅僅是這個,在multispace之後還有更多的字符串,也許是tab,但是我沒有在問題中添加它,因爲我不知道它是否是它是否需要,我只是問在第一次換行後是否有多個空格或製表符,它必須被刪除。我不知道如果裏面還有換行符,會發生什麼。 – LuminaChen 2014-10-12 04:58:19
但重要的是,這個問題已經回答=)。對於我的情況,我確信我可以找出如何做我想要的。 – LuminaChen 2014-10-12 05:03:16