从字符串Scala的末尾删除字符


82

在Scala中从字符串末尾删除最后一个字符的最简单方法是什么?

我发现Rubys String类具有一些非常有用的方法,例如chop。我本该在Scala中使用“ oddoneoutz” .headOption,但已过时。我不想陷入过于复杂的境地:

string.slice(0, string.length - 1)

请有人告诉我,有一个很好的简单方法,例如砍掉这种常见的东西。

Answers:



13
string.init // padding for the minimum 15 characters

谢谢沃尔特,这正是我认为Scala可以使用的方法。同样,所有这些好方法都是2.8,所以我来升级:)
BefittingTheorem

7
val str = "Hello world!"
str take (str.length - 1) mkString

+1,谢谢@Daniel Spiewak; 导致我进入“ str drop(str.length -4)”,获得了信用卡的最后4张,正是我所需要的;-)
virtualeyes 2012年


4
string.reverse.substring(1).reverse

基本上就是印章吧?如果您希望使用斩波方法,为什么不编写自己的StringUtils库并将其包含在项目中,直到找到合适的,更通用的替代方法?

嘿,看,这是共同点。

Apache CommonsStringUtils


3
肯定是斯蒂芬。我希望找到一种方法,当您查看代码时,您会了解发生了什么事情:)我的意思是:对于诸如“从字符串中删除最后一个字符”这样的简单操作,reverse.substring(1).reverse是误导。感谢您的答复
BefittingTheorem

另外,您需要将字符串包装到StringBuilder中以获得反向方法。
Fabian Steeg

2
第一部分主要是一个玩笑:P。任何看着您的Scala的Java程序员都应该熟悉StringUtils,或者至少知道Apache Commons库以了解导入,并且不会受到冒犯。公用是有用的,应尽可能使用它。我发现大多数项目在某个时候都包含公用,因此使用该库通常没有任何花费。您甚至可以在scala程序中将StringUtils别名为su,并将其称为su.chop(str),它非常简洁,不像使用子字符串那样麻烦。
Stefan Kendall

太糟糕了,StringUtils的隐式工作量很大。仅显示了Scala用户和Java用户在考虑扩展方法方面的不匹配。
肯·布鲁姆

导入org.apache.commons.blah。{StringUtils => su}有很多工作吗?理想情况下,就像我已经说过的那样,您应该部署到已经建立了这些库的环境中。
Stefan Kendall,2009年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.