Bir String Scala'nın Sonundan Karakterleri Kaldırma


82

Scala'da bir String'in sonundan son karakteri kaldırmanın en basit yöntemi nedir?

Rubys String sınıfının chop gibi çok kullanışlı yöntemlere sahip olduğunu görüyorum . Scala'da "oddoneoutz" .headOption kullanırdım, ancak amortismana tabi tutuldu. Aşırı karmaşıklığa girmek istemiyorum:

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

Lütfen birisi bana bu kadar yaygın bir şey için doğramak gibi güzel ve basit bir yöntem olduğunu söylesin.

Yanıtlar:


156

2.8'de çalışan dropRight'ı kullanmaya ne dersiniz: -

"abc!".dropRight(1)

Hangi "abc" üretir


1
2.7 için bulabileceğim en kısa şey "abc!". Split (". $) (0)
Don Mackenzie

3
Oops "abc!" Demek istiyorum. Split (". $") (0)
Don Mackenzie

Mükemmel Teşekkürler Don, 2.8'e yükseltmem gerekecek :)
BefittingTheorem

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

Teşekkürler Walter, Scala'nın yapacağını düşündüğüm yöntem tam olarak buydu. Yine tüm bu güzel yöntemler yalnızca 2.8, bu yüzden buraya yükseltin :)
Befitting Theorem

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

+1, teşekkürler @Daniel Spiewak; beni "str drop (str.length -4)" e yönlendirdi, kredi kartının son 4'ünü aldı, tam ihtiyacım olanı ;-)
virtualeyes


4
string.reverse.substring(1).reverse

Bu temelde doğrayın, değil mi? Bir kıyma yöntemini özlüyorsanız, neden kendi StringUtilskitaplığınızı yazıp uygun, daha genel bir yedek bulana kadar projelerinize dahil etmiyorsunuz?

Hey, bak, ortada.

Apache CommonsStringUtils .


3
Kesinlikle Stefan. Koda baktığınızda neler olup bittiğini anladığınız bir yöntem umuyordum :) Diyorum ki: "dizeden son karakteri kaldır" gibi basit bir şey için reverse.substring (1) .reverse yanıltıcı. Cevabınız için teşekkürler
BefittingTheorem

Ayrıca, ters bir yöntem elde etmek için dizeyi bir StringBuilder'a sarmalamanız gerekir.
Fabian Steeg

2
İlk bölüm çoğunlukla bir şakaydı: P. Scala'nıza bakan herhangi bir Java programcısı, içe aktarmayı görmek ve rahatsız olmamak için StringUtils'e aşina olmalı veya en azından Apache Commons kitaplığını bilmelidir. Commons kullanışlıdır ve mümkün olan yerlerde kullanılmalıdır. Çoğu projenin bir noktada ortak alanlar içerdiğini buldum, bu nedenle genellikle kütüphaneyi kullanmanın hiçbir maliyeti yoktur. Hatta StringUtils'i scala programlarınızda su olarak adlandırabilir ve ona su.chop (str) olarak başvurabilirsiniz, bu oldukça kısa ve alt dizeyi kullanmak kadar berbat değildir.
Stefan Kendall

StringUtils için örtük bir ifade çok kötü olurdu, çok fazla çalışma olurdu. Yalnızca Scala kullanıcılarının ve Java kullanıcılarının uzantı yöntemleri hakkında düşünme biçimleri arasındaki uyuşmazlığı gösterir.
Ken Bloom

import org.apache.commons.blah. {StringUtils => su} çok iş mi? İdeal olarak, söylediğim gibi, bu kitaplıkların önceden kurulmuş olduğu bir ortama dağıtım yaparsınız.
Stefan Kendall
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.