【问题标题】:Hashtag generator function - check to see if string matches requirementsHashtag 生成器功能 - 检查字符串是否符合要求
【发布时间】:2016-03-11 21:27:35
【问题描述】:

函数generateHashtag(str); 传递一个必须满足以下条件的字符串:

  1. 如果最终结果超过 140 个字符,则必须返回 false。
  2. 如果输入为空字符串,则必须返回 false。
  3. 必须以井号 (#) 开头。
  4. 所有单词的首字母必须大写。

输入输出示例:

" 您好,感谢您试用我的 Kata" => "#HelloThereThanksForTryingMyKata"

“你好世界”=>“#HelloWorld”

到目前为止,这是我的代码:

function generateHashtag (str) {
    if (!str) {
        return false;
    } else {
        var los = str.toLowerCase();
        var res = los.replace(/\b./g, function(m){ return m.toUpperCase(); });
    } 

    if ( res.charAt( 0 ) != '#' ) { 
        res = "# " + res;
    } else {
        res = "" + res;
    }

    if (res.length > 140) {
        return false; 
    } else {
        return res;
    }
}

这是来自 codewar.com 网站的编码挑战。我在那里收到以下消息Test didn't pass: Unknown error。它适用于 js fiddle link to js fiddle

【问题讨论】:

  • 看起来您没有替换空白字符。您是否尝试过添加像 /\s/g 或类似的正则表达式来替换空格?您还可以使用 res = "# " + res; 在乞讨时添加一个空格

标签: javascript


【解决方案1】:

这行得通吗?

function generateHashtag (str) {
  if(!str || str.length == 0 || (str.replace(/([^a-zA-Z\s])/g, "").length + 1) > 140)
    return false;

  var finalString = "";
  str = str.replace(/([^a-zA-Z\s])/g, "").trim().toLowerCase().split(" ");

  for(i in str)
    finalString += str[i].charAt(0).toUpperCase() + str[i].slice(1);

  return "#" + finalString;
}

https://jsfiddle.net/c0m6bcq6/1/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-05
    • 1970-01-01
    • 1970-01-01
    • 2013-10-25
    相关资源
    最近更新 更多