【问题标题】:Try to truncate string substring in JS but did not work尝试在 JS 中截断字符串子串但没有用
【发布时间】:2018-08-27 04:15:44
【问题描述】:
 function truncate(str, num) {
    if (str.length >= num) {
        if (num > 3) {
            str.substr(0, num - 3) + '...';
        } else {
            str.substr(0, num) + '...';
       }
    }   return str;
 }
console.log(truncate("A-tisket a-tasket A green and yellow basket", 11));

它返回了原始字符串 A-tisket a-tasket 一个绿色和黄色的篮子。我想知道这里有什么问题。

【问题讨论】:

  • 你不回来了..
  • 没关系,我没有调用 substr 方法。应该是"str=str.substr(0, num - 3) + '...';"
  • 或者只是return str.substr(0, num - 3) + '...';

标签: javascript return substring truncate


【解决方案1】:

substr 是一个不可变的操作。这意味着当你执行它时,它不会改变你应用它的字符串的原始值。

为了让它工作,你应该将子字符串保存在一个额外的变量中:

function truncate(str, num) {
    if (str.length >= num) {

        if (num > 3) {
           return str.substr(0, num - 3) + '...';
        } else {
           return str.substr(0, num) + '...';
       }
    }   return str;
 }
console.log(truncate("A-tisket a-tasket A green and yellow basket", 11));

【讨论】:

    【解决方案2】:

    这是因为返回的str指向函数参数中的str。创建一个单独的变量并将子字符串分配给它并返回值

    function truncate(str, num) {
      let subStr = '';
      if (str.length >= num) {
        if (num > 3) {
          subStr = str.substr(0, num - 3) + '...';
        } else {
          subStr = str.substr(0, num) + '...';
        }
      }
      return subStr;
    }
    console.log(truncate("A-tisket a-tasket A green and yellow basket", 11));

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-09-09
      • 2019-04-23
      • 2015-03-12
      • 2020-07-13
      • 2014-06-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多