回答
使用正则表达式(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. 删除VIM中多行的空格
- 7. 删除空格,但最后删除空格吗?
- 8. 删除Javascript中的所有多个空格,并用单个空格替换
- 9. PHP标记,删除多个空格
- 10. “find”删除bash中的多个空格
- 11. 正则表达式在HTML标记中删除多个空格和换行符
- 12. 用一个空格替换所有多空格字符除了换行符
- 13. 在Outlook中删除前后空格
- 14. 在HTML中删除div后的空格
- 15. XSL在转换后删除空元素
- 16. 从网格删除空行
- 17. 删除表格的空行
- 18. 删除多个空格字符之前和之后PHP
- 19. 删除最后一个空白行
- 20. 如何删除表格后的空格
- 21. 如何在python中换行之前从行尾删除多余的空格?
- 22. 在NetBeans中删除多余的空格
- 23. 删除多个空格 - PHP没有找到空格
- 24. R - 在条件日期(多个条件)后删除/删除行
- 25. 如何从HTML实体中删除多个空格和换行符
- 26. 删除前三个空格
- 27. 删除空格
- 28. 删除空格
- 29. 删除空格
- 30. 删除空格
如果只有一个这样的字符,你不想删除它们吗? – sawa 2014-10-12 04:15:34
@sawa 不,我不想这样做,因为实际上我的字符串不仅仅是这个,在multispace之后还有更多的字符串,也许是tab,但是我没有在问题中添加它,因为我不知道它是否是它是否需要,我只是问在第一次换行后是否有多个空格或制表符,它必须被删除。我不知道如果里面还有换行符,会发生什么。 – LuminaChen 2014-10-12 04:58:19
但重要的是,这个问题已经回答=)。对于我的情况,我确信我可以找出如何做我想要的。 – LuminaChen 2014-10-12 05:03:16