如何在Elixir中加入字符串?

 gbn3312168 发布于 2023-02-07 16:23

如何使用空格连接列表中的两个字符串,如:

["StringA", "StringB"]

"StringA StringB"

thiagofm.. 197

如果您只想加入一些任意列表:

"StringA" <> " " <> "StringB"

或者只是使用字符串插值:

 "#{a} #{b}"

如果您的列表大小是任意的:

Enum.join(["StringA", "StringB"], " ")

......以上所有解决方案都将返回

"StringA StringB"

使用管道运算符的替代语法:`["StringA","StringB"] |> Enum.join""` (33认同)

当您实际上不需要管道操作时,应该避免使用管道操作符. (8认同)

@Schrockwell是的,"应该"太多了.我的意思是,这种情况下你没有获得可读性,所以一个简单的函数调用会使思考更明确. (5认同)

@EdMelo关心详细说明原因?从技术上讲,您从未真正"需要"管道操作,因为嵌套函数调用可以实现相同的行为. (3认同)


Carlos Martí.. 59

如果你拥有的是一个任意列表,那么你可以使用Enum.join,但如果只有两个或三个,显式字符串连接应该更容易阅读

"StringA" <> " " <> "StringB"

但是,如果您要通过网络输出,通常不需要将其作为单个字符串存储在内存中.在这种情况下,使用iolist(特定类型的深度列表)可能是有利的,这样可以避免复制数据.例如,

iex(1)> IO.puts(["StringA", " ", "StringB"])
StringA StringB
:ok

由于您可以将这些字符串作为变量放在某处,通过使用深层列表,您可以避免分配一个全新的字符串,只是为了将其输出到别处.elixir/erlang中的许多函数都理解iolists,因此您通常不需要做额外的工作.

4 个回答
  • 一个Enum.reduce也可以用于你的例子吗?

    iex(4)> Enum.reduce(["StringA", "StringB"], fn(x, acc) -> x <> " " <> acc end) "StringB StringA"

    2023-02-07 16:26 回答
  • 为了完整性,您还可以使用字符串插值:

    iex(1)> [a, b] = ["StringA", "StringB"]
    iex(2)> "#{a} #{b}"
    "StringA StringB"
    

    2023-02-07 16:26 回答
  • 如果你拥有的是一个任意列表,那么你可以使用Enum.join,但如果只有两个或三个,显式字符串连接应该更容易阅读

    "StringA" <> " " <> "StringB"
    

    但是,如果您要通过网络输出,通常不需要将其作为单个字符串存储在内存中.在这种情况下,使用iolist(特定类型的深度列表)可能是有利的,这样可以避免复制数据.例如,

    iex(1)> IO.puts(["StringA", " ", "StringB"])
    StringA StringB
    :ok
    

    由于您可以将这些字符串作为变量放在某处,通过使用深层列表,您可以避免分配一个全新的字符串,只是为了将其输出到别处.elixir/erlang中的许多函数都理解iolists,因此您通常不需要做额外的工作.

    2023-02-07 16:26 回答
  • 如果您只想加入一些任意列表:

    "StringA" <> " " <> "StringB"
    

    或者只是使用字符串插值:

     "#{a} #{b}"
    

    如果您的列表大小是任意的:

    Enum.join(["StringA", "StringB"], " ")
    

    ......以上所有解决方案都将返回

    "StringA StringB"
    

    2023-02-07 16:26 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有