Xóa các ký tự khỏi phần cuối của chuỗi Scala


82

Phương pháp đơn giản nhất để xóa ký tự cuối cùng khỏi phần cuối của một chuỗi trong Scala là gì?

Tôi thấy lớp Chuỗi rubys có một số phương thức rất hữu ích như chop . Tôi đã sử dụng "Odoneoutz" .headOption trong Scala, nhưng nó bị mất giá. Tôi không muốn đi vào quá phức tạp:

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

Làm ơn ai đó cho tôi biết có một phương pháp đơn giản hay ho như chop cho một thứ phổ biến này.

Câu trả lời:


153

Làm thế nào về việc sử dụng dropRight, hoạt động trong 2.8: -

"abc!".dropRight(1)

Cái nào tạo ra "abc"


1
Các ngắn gọn nhất mà tôi có thể đưa ra cho 2,7 là "abc!" Split (0). (" $.)
Don Mackenzie

3
Rất tiếc, ý tôi là "abc!". Split (". $") (0)
Don Mackenzie,

Tuyệt vời Cảm ơn Don, tôi sẽ phải nâng cấp lên 2.8 :)
BefittingTheorem

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

Cảm ơn Walter, đó chính xác là phương pháp mà tôi nghĩ Scala sẽ có. Một lần nữa tất cả những phương pháp tốt là 2,8 chỉ, vì vậy nâng cấp ở đây tôi đi :)
BefittingTheorem

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

+1, cảm ơn @Daniel Spiewak; dẫn tôi đến "str thả (str.length -4)", được cuối cùng 4 thẻ tín dụng, chỉ là những gì tôi cần ;-)
virtualeyes

5

Nếu bạn muốn giải pháp hiệu quả nhất ngoài việc sử dụng:

str.substring(0, str.length - 1)

4
string.reverse.substring(1).reverse

Về cơ bản đó là đũa, phải không? Nếu bạn đang khao khát một phương pháp chặt chẽ, tại sao không viết StringUtilsthư viện của riêng bạn và đưa nó vào các dự án của bạn cho đến khi bạn tìm thấy một phương pháp thay thế phù hợp và chung chung hơn?

Này, nghe này, nó đang ở chung.

Apache CommonsStringUtils .


3
Đó chắc chắn là Stefan. Tôi đã hy vọng một phương pháp mà khi bạn nhìn vào mã, bạn sẽ hiểu điều gì đang xảy ra :) Điều tôi đang nói là: Đối với một cái gì đó đơn giản như "xóa ký tự cuối cùng khỏi chuỗi" reverse.substring (1) .reverse là gây hiểu lầm. Cảm ơn bạn đã trả lời
BefittingTheorem

Thêm vào đó, bạn cần phải quấn chuỗi thành một StringBuilder để có được một phương thức ngược lại.
Fabianamondsg

2
Phần đầu chủ yếu là một trò đùa: P. Bất kỳ lập trình viên Java nào nhìn vào Scala của bạn đều phải quen thuộc với StringUtils, hoặc ít nhất biết về thư viện Apache Commons để xem việc nhập và không bị xúc phạm. Commons rất hữu ích và nó nên được sử dụng nếu có thể. Tôi nhận thấy rằng hầu hết các dự án đều bao gồm commons tại một số điểm, vì vậy nói chung không có chi phí để sử dụng thư viện. Bạn thậm chí có thể đặt bí danh StringUtils là su trong các chương trình scala của mình và gọi nó là su.chop (str), khá ngắn gọn và không tệ như sử dụng chuỗi con.
Stefan Kendall

Quá tệ là một ẩn cho StringUtils sẽ là rất nhiều công việc. Chỉ cho thấy sự không phù hợp giữa cách người dùng Scala và người dùng Java nghĩ về các phương pháp mở rộng.
Ken Bloom

import org.apache.commons.blah. {StringUtils => su} có nhiều việc không? Lý tưởng nhất là bạn đang triển khai môi trường với các thư viện này đã được thiết lập, như tôi đã nói.
Stefan Kendall
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.