Truncate string when it is too long

后端 未结 4 571
暖寄归人
暖寄归人 2021-01-04 12:06

I have two strings:

short_string = \"hello world\"
long_string = \"this is a very long long long .... string\" # suppose more than 10000 chars
4条回答
  •  耶瑟儿~
    2021-01-04 12:33

    First of all, you need a method to truncate a string, either something like:

    def truncate(string, max)
      string.length > max ? "#{string[0...max]}..." : string
    end
    

    Or by extending String: (it's not recommended to alter core classes, though)

    class String
      def truncate(max)
        length > max ? "#{self[0...max]}..." : self
      end
    end
    

    Now you can call truncate when printing the string:

    puts "short string".truncate
    #=> short string
    
    puts "a very, very, very, very long string".truncate
    #=> a very, very, very, ...
    

    Or you could just define your own puts:

    def puts(string)
      super(string.truncate(20))
    end
    
    puts "short string"
    #=> short string
    
    puts "a very, very, very, very long string"
    #=> a very, very, very, ...
    

    Note that Kernel#puts takes a variable number of arguments, you might want to change your puts method accordingly.

提交回复
热议问题