【问题标题】:It it possible to truncate text in a groq query?可以在 groq 查询中截断文本吗?
【发布时间】:2022-10-17 18:42:05
【问题描述】:

我想从(便携式)文本字段创建一个excerpt。这是可能的吗?

我知道我可以使用pt::text(body) 取回文本值,并且可以从中获取诸如长度之类的值。有什么办法可以在n字符或单词之后剪切文本?

【问题讨论】:

    标签: sanity groq


    【解决方案1】:

    我现在已经解决了这个问题。我觉得这有点像黑客,但本质上......

    1. 如上获取body的字符串:pt::text(body)
    2. 将字符串拆分为包含每个字符的数组:string::split(bodyString, "")
    3. 将其截断为 255 个字符:[0..255]
    4. 重新加入:array::join(truncated, "")
    5. 在末尾添加一个省略号:+ "..."

      连接在一起可以是一组通过管道传输的查询:

      *[_type == "article" && draft != true ] | order(publishedOn desc)[0..5] {
        "excerpt": (pt::text(body)),
      } | {
       "excerpt": string::split(excerpt, "")[0..255]
      } | {
        "excerpt": array::join(excerpt, "") + "..."
      }
      

      或作为一个查询:

      *[_type == "article" && draft != true ] | order(publishedOn desc)[0..5] {
           "excerpt": array::join(string::split((pt::text(body)), "")[0..255], "") + "..."
      }
      

    【讨论】:

      猜你喜欢
      • 2019-11-14
      • 2021-04-30
      • 1970-01-01
      • 1970-01-01
      • 2018-07-05
      • 1970-01-01
      • 2023-03-25
      • 1970-01-01
      • 2023-02-02
      相关资源
      最近更新 更多