我想要字符串中的最后一个字符
我有str.[str.Length - 1]
,但那很难看。必须有更好的方法。
答案 0 :(得分:12)
没有更好的方法 - 你拥有的很好。
如果您真的打算这么做,可以在字符串类型上创建一个F#扩展属性:
let s = "food"
type System.String with
member this.Last =
this.Chars(this.Length-1) // may raise an exception
printfn "%c" s.Last
答案 1 :(得分:3)
(这是一个老问题),有人可能会从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() - &gt; “d”
“ABCD”。最后(1) - &gt; “d”
“ABCD”。最后(-1) - &gt; “d”
“ABCD”。最后(2) - &gt; “C”
答案 2 :(得分:3)
这也很方便:
(function(start, x, z){
for (var i=0; i<z; i++){
if (x === undefined){}
}
console.info('t1 ', Date.now() - start);
start = Date.now();
for (var i=0; i<z; i++){
if (x === void 0){}
}
console.info('t1 ', Date.now() - start);
})(Date.now(), '', 1e6)
结果:
let s = "I am string"
let lastChar = s |> Seq.last
答案 3 :(得分:1)
您也可以将其视为一个序列,但我不确定这是否比您所拥有的解决方案更难或更难:
Seq.nth (Seq.length str - 1) str