【问题标题】:Extract first line from a (possibly multiline) string从(可能是多行)字符串中提取第一行
【发布时间】:2021-06-21 00:19:23
【问题描述】:

我有一个字符串s,通常(但见下文)包含几个\n,因此可以视为多行字符串。我想得到第一行(不包括终止换行符);但如果根本没有换行符,则应返回整个字符串。示例:

"abc\ndef" -> "abc"
"\ndef"    -> ""
"xyz"      -> "xyz"

我的第一次尝试是

s[/.*(?=\n)/]

但如果 s 中没有换行符,则返回 nil(因为前瞻表达式不匹配)。然后我考虑了

s[0,s.index("\n")||s.length]

这确实有效,但我需要三次提及变量 (s) 并发现这在美学上令人不快。有人知道如何编写一个可以在这里使用的简洁表达式吗?

更新:我不想扫描整个字符串(通常相当大)。我需要它只解析第一个换行符。

【问题讨论】:

  • 也许使用 split 功能会起作用。
  • 它将整个字符串分成几行。就我而言,字符串相当长(整个文件),我不需要完全解析它。
  • s.each_line.first.chomp
  • 这能回答你的问题吗? Reading the first line of a file in Ruby
  • 您可以将拆分限制设置为仅拆分一次。

标签: ruby


【解决方案1】:

您可以使用s.split("\n", 2)[0]。 这会在每个换行符处拆分字符串,然后获取数组的第一个元素。我们还使用了 limit 参数,所以它只分裂一次。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多