【问题标题】:How to replace the last line of a string如何替换字符串的最后一行
【发布时间】:2016-08-07 02:55:35
【问题描述】:

有没有办法仅从文本区域的值替换字符串的最后一行?我将要更改的字符串将是动态的!此代码在 jquery 中!

var $textarea = $('#textarea');
var textarea_val = $textarea.val()
var value_list = textarea_val.split("\n");
var string_to_change = "lol"; //This value is dynamic
var last_value = value_list[invite_value.length - 1];


$textarea.val(textarea_val.replace(last_value, string_to_change)) //This is where I am stuck at!

最后一段代码将替换 textarea_val 的 last_value 的每个实例,这是我想要阻止的,并且只替换 textarea 值的最后一行!

【问题讨论】:

    标签: jquery


    【解决方案1】:

    您更改数组中的最后一个值:),然后再次加入它

    $('.replace').click(function() {
      var txt = $('#textarea');
      var text = txt.val().trim("\n");
      var valuelist = text.split("\n");
      var string_to_replace = "lol";
      valuelist[valuelist.length-1] = string_to_replace;
      txt.val(valuelist.join("\n"));
    
    })
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <textarea id="textarea">
    
    </textarea>
    <button class="replace">Replace</button>

    【讨论】:

    • 如果你不使用enter,它将替换所有文本。
    • 好吧@Mohammad,如果你不使用回车,那么所有文本都是一行?
    • 我测试了它,这正是我想要的!谢谢@MarkoMackic
    【解决方案2】:

    从数组中删除最后一个元素,然后添加一个新元素并更改 textarea 值

    $('.change').click(function() {
      var txt = $('#textarea');
      var valuelist = txt.val().split("\n");
      var string_to_replace = "lol";
      valuelist.pop();
      valuelist.push(string_to_replace);
      txt.val(valuelist.join("\n"));
    
    })
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <textarea id="textarea">
    
    </textarea>
    <button class="change">change</button>

    【讨论】:

      【解决方案3】:

      您可以替换数组中的最后一项,然后将数组连接回字符串并将值设置回文本区域

      var value_list = textarea_val.split("\n");
      var string_to_change = "lol"; //This value is dynamic
      value_list[value_list.length -  1] = string_to_change
      
      $textarea.val(value_list.join("\n")) 
      

      【讨论】:

        【解决方案4】:
        var position = $textarea_val.lastIndexOf(last_value);
        $textarea.val($textarea_val.substring(0, position) + string_to_change + $textarea_val.substring(position + last_value.length);
        

        这样的?

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2014-02-12
          • 2016-01-31
          • 1970-01-01
          • 2010-12-12
          • 1970-01-01
          • 1970-01-01
          • 2019-12-18
          相关资源
          最近更新 更多