gpt4 book ai didi

string - 有没有更简单或更漂亮的方法来反转字符串?

转载 作者:行者123 更新时间:2023-12-04 00:36:44 24 4
gpt4 key购买 nike

现在我正在使用这样的方法:

let x_rev = new string(x.Reverse().ToArray())

最佳答案

这是一些基于 Timwi 对 Nate 回答的评论的代码。存在由多个实际字符组成的单个逻辑字母(如屏幕上显示的那样)。颠倒字符的顺序会将这些字母变成乱码。

Timwi 很有帮助地指出,该框架提供了一个 TextElementEnumerator它适用于逻辑文本元素而不是字符,并正确处理这些多字符字母。我以前没有听说过这个类,所以我写了一些代码,使用 TextElementEnumerator 正确反转字符串,并将结果与​​简单的字符串反转进行比较。

open System
open System.Globalization

// five characters that render as three letters: "𐀀àÆ"
let myString = "\uD800\uDC00\u0061\u0300\u00C6"

// naive reversal scrambles the string: "Æ̀a��"
// (note that while this produces the wrong results,
// it probably is faster on large strings than using
// LINQ extension methods, which are also wrong)
let naive = String(myString.ToCharArray() |> Array.rev)

// use a TextElementEnumerator to create a seq<string>
// that handles multi-character text elements properly
let elements =
seq {
let tee = StringInfo.GetTextElementEnumerator(myString)
while tee.MoveNext() do
yield tee.GetTextElement()
}

// properly reversed: "Æà𐀀"
let reversed = elements |> Array.ofSeq |> Array.rev |> String.concat ""

关于string - 有没有更简单或更漂亮的方法来反转字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4556160/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com