【问题标题】:How to extract first substring from string with multiple hits如何从多次点击的字符串中提取第一个子字符串
【发布时间】:2017-01-23 23:24:37
【问题描述】:

好的。代码新手,哇,我喜欢吗!不过还是新手,请耐心等待。我正在使用 JS。

所以,我正在尝试遍历字符串以查找元音。当我在字符串中找到第一个元音时,我想将所有以前的字符存储在一个变量中。例如:spacing 将呈现 sp。问题是我得到了多次点击,因为循环继续到字符串的末尾并沿途找到更多元音,也给出了 ng,在这种情况下,作为结果。

for (var i = 0; i < text.length; i++) {
        if ("a" === text[i] || "e" === text[i] || "i" === text[i] || "o" === text[i] || "u" === text[i] || "y" === text[i]) {
            var textTrimmed = text.substring(0, i);
        }
}

那么:存储第一个命中? 有人知道我可以使用并理解的巧妙技巧吗?

【问题讨论】:

    标签: javascript for-loop substring


    【解决方案1】:

    如果您正在寻找“巧妙的技巧”,我可能会建议您使用Regular ExpressionssliceBeforeFirstVowel 函数搜索并返回字符串开头的任何连续非元音,不区分大小写。我已根据您的代码包含y,但请注意,它并不总是用作元音,因此函数名称可能有点误导。

    function sliceBeforeFirstVowel (text) {
        return /^[^aeiouy]*/i.exec(text)[0]
    }
    
    console.log('spacing ->', sliceBeforeFirstVowel('spacing'))

    【讨论】:

      【解决方案2】:

      您始终可以使用break,这将使您脱离for 循环。

      【讨论】:

      • 但是 break 不会做任何事情,因为它会循环然后中断,对吗?或者你能告诉我你的想法吗?
      • @DjangoJoe 不,break; 总是打破循环。只需将其放在var textTrimmed 行的正下方即可。
      • 只有当您输入 if 条件时才会发生中断,因此您将获取您需要的值,然后将它们中断..
      猜你喜欢
      • 2021-01-09
      • 1970-01-01
      • 1970-01-01
      • 2019-02-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多