【问题标题】:How do I split a String in CSH?如何在 CSH 中拆分字符串?
【发布时间】:2011-12-05 19:35:24
【问题描述】:

例如,我想用逗号分隔“一、二、三”,并使用循环分别处理生成的三个子字符串。

【问题讨论】:

    标签: csh


    【解决方案1】:

    例如:

    set s = "one,two,three"
    set words = `echo $s:q | sed 's/,/ /g'`
    foreach word ($words:q)
        echo $word:q
    end
    

    但请考虑 csh 是否适合您从事的任何工作:

    http://www.bmsc.washington.edu/people/merritt/text/cshbad.txt

    【讨论】:

    • 谢谢。 :q 在这里是什么意思?
    • 引用变量; $s:q 类似于 "$s"。此示例不需要它,但在其他情况下可能需要它(例如,数据中有空格)。
    【解决方案2】:

    一个比当前解决方案更简单的解决方案是使用内置替换修饰符——在这种情况下没有必要或没有理由浪费地使用循环或外部命令替换:

    set list = one,two,three
    set split = ($list:as/,/ /)
    
    echo $split[2] # returns two
    

    () 创建一个列表, :s 是替换修饰符, :as 根据需要多次重复替换。

    此外,t/csh 不需要引用裸字符串,也不需要强制评估的变量。

    【讨论】:

      【解决方案3】:
      set list = one,two,three
      foreach i ( $list:as/,/ / )
        echo $i
      end
      

      【讨论】:

      • 你能解释一下wt是函数吗
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-26
      • 2017-06-06
      • 2014-12-25
      • 2013-10-30
      • 2011-03-29
      相关资源
      最近更新 更多