Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何删除ruby中分隔符之后的所有文本_Ruby - Fatal编程技术网

如何删除ruby中分隔符之后的所有文本

如何删除ruby中分隔符之后的所有文本,ruby,Ruby,我正在尝试使用我拥有的文本文档执行以下操作: 使用ruby导入.txt文件,将其按行拆分,并将其推送到数组中 删除数组中所有字符串后面的所有字符,包括特定分隔符 将每个数组元素写回新文本文件中的新行 我正在尝试使用ruby来完成这项工作,我已经完成了第一步,但我无法通过第二步。我现在被一系列的字符串卡住了。任何帮助都将不胜感激 这里有一些东西可以让你开始做你想做的事情。您可能希望使其更紧凑,但我将其变得冗长,以便您可以遵循流程 path_to_file = '/dir_path_to_file'

我正在尝试使用我拥有的文本文档执行以下操作:

  • 使用ruby导入.txt文件,将其按行拆分,并将其推送到数组中
  • 删除数组中所有字符串后面的所有字符,包括特定分隔符
  • 将每个数组元素写回新文本文件中的新行

  • 我正在尝试使用ruby来完成这项工作,我已经完成了第一步,但我无法通过第二步。我现在被一系列的字符串卡住了。任何帮助都将不胜感激

    这里有一些东西可以让你开始做你想做的事情。您可能希望使其更紧凑,但我将其变得冗长,以便您可以遵循流程

    path_to_file = '/dir_path_to_file'
    delimiter = ':'
    
    strings = %w(aa:aa bb:bb cc:cc dd:dd) # this is some test data. replace with your array read in from file
    
    # Open file for writing
    File.open(path_to_file, 'w') do |file|
      strings.each do |string|
    
        index_of_delimiter = string.index(delimiter)
    
        stripped_string = string.slice(0..index_of_delimiter - 1)
    
        # append line to file with \n for new line
        file << stripped_string << "\n"
    
       end
    end
    
    path_to_file='/dir_path_to_file'
    分隔符=':'
    字符串=%w(aa:aa-bb:bb-cc:cc-dd:dd)#这是一些测试数据。替换为从文件中读入的数组
    #打开文件进行写入
    打开(路径到文件,'w')do |文件|
    字符串。每个do|字符串|
    分隔符的索引=字符串。索引(分隔符)
    stripped_string=string.slice(0..分隔符-1的索引)
    #将行附加到文件,并使用\n作为新行
    
    文件假设您有这样一个文本文件:

    aaa
    bbb
    BEGIN
    xxx
    xxx
    END
    ccc
    
    有一个“肮脏”的小Ruby技巧可以与触发器操作符一起使用:

    # Load file
    lines = File.readlines("the_text_file")
    
    # Reject all lines between BEGIN and END
    lines.reject! { |line| true if (line =~ /^BEGIN/)..(line =~ /^END/) }
    
    # Output result
    puts lines
    
    输出:

    aaa
    bbb
    ccc
    

    您不必预先读取整个文件。一行一行地处理。甚至还有ruby的命令行开关(
    -n

    假设您的分隔符是
    |

    cat inputfile | ruby -ne 'puts $_.sub /\|.*/, ""' > outputfile
    
    或者(使用
    -p
    开关)


    你想删除什么之后的所有字符?他们想切掉每一行:“按行分割,并将其推到数组中2)删除数组中所有字符串之后的所有字符并包括特定的分隔符”@mu-riilight..oops..ok。好吧,下次他们最好能更好地描述他们的问题,所以我不会提供无用的答案:)不过这仍然是一个巧妙的技巧。我把它免费放在这里。它叫触发器操作符,不是范围操作符。
    cat inputfile | ruby -pe '$_.sub! /\|.*/, ""' > outputfile