Je veux que le dernier caractère d'une chaînemeilleure façon d'obtenir le dernier caractère dans une chaîne en f #
J'ai str.[str.Length - 1]
, mais c'est laid. Il doit y avoir un meilleur moyen.
Je veux que le dernier caractère d'une chaînemeilleure façon d'obtenir le dernier caractère dans une chaîne en f #
J'ai str.[str.Length - 1]
, mais c'est laid. Il doit y avoir un meilleur moyen.
Il n'y a pas de meilleure façon de le faire - ce que vous avez est bon.
Si vous prévoyez vraiment faire beaucoup, vous pouvez l'auteur d'une propriété d'extension F # sur le type de chaîne:
let s = "food"
type System.String with
member this.Last =
this.Chars(this.Length-1) // may raise an exception
printfn "%c" s.Last
Vous pouvez aussi le traiter comme une séquence, mais je ne suis pas sûr que ce soit plus ou moins laid que la solution que vous avez:
Seq.nth (Seq.length str - 1) str
(Ceci est vieille question), quelqu'un pourrait trouver cela utile, réponse orig de Brian.
type System.String with
member this.Last() =
if this.Length > 1 then
this.Chars(this.Length - 1).ToString()
else
this.[0].ToString()
member this.Last(n:int) =
let absn = Math.Abs(n)
if this.Length > absn then
let nn =
let a = if absn = 0 then 1 else absn
let b = this.Length - a
if b < 0 then 0 else b
this.Chars(nn).ToString()
else
this.[0].ToString()
"ABCD" .last() -> "D"
"ABCD" .last (1) -> "D"
"ABCD" .last (- 1) -> "D"
"ABCD" .last (2) -> "C"
Cela pourrait être aussi pratique:
let s = "I am string"
let lastChar = s |> Seq.last
Résultat:
val lastChar : char = 'g'
Pourquoi est-ce laid? Cherchez-vous quelque chose comme str.LastChar()? – Prescott
J'espérais quelque chose comme 'str last' –
Il n'y a pas de meilleur moyen (sauf si vous écrivez le vôtre) –