gpt4 book ai didi

F# 修剪空字符

转载 作者:行者123 更新时间:2023-12-02 00:58:45 25 4
gpt4 key购买 nike

我从网络套接字收到一个字符串:

let websocket = new ClientWebSocket()
let source = new CancellationTokenSource()
let buffer = ArraySegment(Array.zeroCreate 32)

do! websocket.ConnectAsync(url, source.Token)
do! websocket.ReceiveAsync(buffer, source.Token)

let str = Encoding.ASCII.GetString buffer.Array

let trim1 = Regex.replace str "\0" String.Empty // result is empty string
let trim2 = Regex.replace str "\\0" String.Empty // result is empty string
let trim3 = str.TrimEnd [| '\\'; '0' |] // result is untouched

我显然是在尝试修剪多余的空字符

在调试器中,str 的值为 "{\"type\":\"hello\"}\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"

打印时看起来像:{“type”:“hello”},这是有道理的,符号被正确解释。

我似乎无法在 f# 中完成这个简单的任务,我做错了什么?

最佳答案

使用 ASCII 转义就可以解决问题:

let trim3 = str.TrimEnd [| '\x00' |]

您还可以使用 unicode 转义序列对其进行转义:

let trim3 = str.TrimEnd [| '\u0000' |]  

您的正则表达式版本不起作用,因为在正则表达式中表示空字符的正确方法是 ASCII escaping using "\x00", or unicode escaping using "\u0000" .

关于F# 修剪空字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43005294/

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