【问题标题】:Fastest way to split a string?分割字符串的最快方法?
【发布时间】:2019-03-08 14:36:35
【问题描述】:

我有一个字节数组在字符串中,分隔符为“,”(逗号)。 前任。 {0,0,222,1,22} 但问题是字符串的长度很大。 比如 5 MB - 6 MB 的文本文件。 我有一个代码可以给我一个合适的字节数组,比如

[0] 0
[1] 0 
[2] 222
[3] 1
[4] 22

但这需要 5-6 分钟。

    var videoParameter = HttpContext.Current.Request.Params["videoParameter"];
    var getContent = videoParameter.Split(',').Select(byte.Parse).ToArray();

请建议我在 c# 中拆分字符串的最快方法。

或 建议我移动团队应该以哪种格式将视频文件发送到 web api 但我不想将文件存储到服务器端。 场景是移动团队向 web api 发送字节数组请求。

【问题讨论】:

  • 将字符串转换为char数组需要多长时间?这可能是一条路。
  • Char 数组会给我字节值吗?
  • 没有?您的问题询问有关拆分字符串的问题,并且您在示例中使用了 var 。我建议拆分字符串对象,并可能利用单独的线程自己手动构造新字符串。
  • @MikaelDúiBolinder 我认为Span<T> 在这种情况下可以派上用场
  • @lerthe61 是的,我要找的是 Span(不是 Range)。

标签: c# arrays .net string asp.net-web-api


【解决方案1】:

使用IFormFile 类型在Web 服务器上接收二进制文件,然后使用StreamReader 读取它,这样您就不需要从string 解析到byte。您也可以使用并行逻辑来读取二进制流,但这可能不如您的要求可能要求您按顺序读取文件那么有用。

【讨论】:

  • 我不想发送我将从移动团队收到的文件。我认为移动团队中不​​存在 IFormFile,他们正在向我的 api 发送字节数组,这就是 IFormFile 不起作用的原因。 .
  • 会的。 IFormFile 是一个接口,它将接受来自 HTTP 请求给出的表单的二进制流。 docs.microsoft.com/en-us/aspnet/core/mvc/models/…
猜你喜欢
  • 1970-01-01
  • 2012-11-16
  • 1970-01-01
  • 1970-01-01
  • 2016-08-29
  • 1970-01-01
  • 2014-08-15
  • 2013-11-30
相关资源
最近更新 更多