在javascript字符串中的破折号后获取所有内容

2020/11/07 05:22 · javascript ·  · 0评论

在IE和firefox中都可以使用的最干净的方法。

我的字符串如下所示:sometext-20202

现在,“ sometext”和破折号后的整数可以具有不同的长度。

我应该只使用substring和index还是其他方式?

我将如何做:

// function you can use:
function getSecondPart(str) {
    return str.split('-')[1];
}
// use the function:
alert(getSecondPart("sometext-20202"));

我更喜欢的解决方案是:

const str = 'sometext-20202';
const slug = str.split('-').pop();

slug你的结果在哪里

var testStr = "sometext-20202"
var splitStr = testStr.substring(testStr.indexOf('-') + 1);
var the_string = "sometext-20202";
var parts = the_string.split('-', 2);

// After calling split(), 'parts' is an array with two elements:
// parts[0] is 'sometext'
// parts[1] is '20202'

var the_text = parts[0];
var the_num  = parts[1];

Mozilla和IE均支持AFAIKsubstring()AFAIK indexOf()但是,请注意,某些浏览器的早期版本(尤其是Netscape / Opera)可能不支持substr()。

您的帖子表明您已经知道如何使用substring()和进行操作indexOf(),因此我不会发布代码示例。

myString.split('-').splice(1).join('-')

您可以使用js中的内置RegExp(pattern [,flags])工厂符号来做到这一点:

RegExp(/-(.*)/).exec("sometext-20202")[1]

在上面的代码中,exec函数将返回一个包含两个元素([“ -20202”,“ 20202”])的数组,一个元素带有连字符(-20202),一个元素不带有连字符(20202),您应该选择第二个元素(索引1)

我之所以提出这个问题,是因为我需要的是OP提出的问题,但比其他提供的答案要多(从技术上来说是正确的,但对我而言太小了)。我已经制定了自己的解决方案;也许会帮助别人。

假设您的字符串是'Version 12.34.56'如果您使用'.'拆分,那么其他答案将倾向于给您提供您'56'可能真正想要的'.34.56'(即,从第一次出现而不是最后一次出现的所有内容,但是OP的特定情况恰好只有一次出现)。也许你甚至想要'Version 12'

我还编写了此代码来处理某些失败(例如,如果null被传递或空字符串等)。在这种情况下,以下函数将返回false

使用

splitAtSearch('Version 12.34.56', '.') // Returns ['Version 12', '.34.56']

功能

/**
 * Splits string based on first result in search
 * @param {string} string - String to split
 * @param {string} search - Characters to split at
 * @return {array|false} - Strings, split at search
 *                        False on blank string or invalid type
 */
function splitAtSearch( string, search ) {
    let isValid = string !== ''              // Disallow Empty
               && typeof string === 'string' // Allow strings
               || typeof string === 'number' // Allow numbers

    if (!isValid) { return false } // Failed
    else          { string += '' } // Ensure string type

    // Search
    let searchIndex = string.indexOf(search)
    let isBlank     = (''+search) === ''
    let isFound     = searchIndex !== -1
    let noSplit     = searchIndex === 0
    let parts       = []

    // Remains whole
    if (!isFound || noSplit || isBlank) {
        parts[0] = string
    }
    // Requires splitting
    else {
        parts[0] = string.substring(0, searchIndex)
        parts[1] = string.substring(searchIndex)
    }

    return parts
}

例子

splitAtSearch('')                      // false
splitAtSearch(true)                    // false
splitAtSearch(false)                   // false
splitAtSearch(null)                    // false
splitAtSearch(undefined)               // false
splitAtSearch(NaN)                     // ['NaN']
splitAtSearch('foobar', 'ba')          // ['foo', 'bar']
splitAtSearch('foobar', '')            // ['foobar']
splitAtSearch('foobar', 'z')           // ['foobar']
splitAtSearch('foobar', 'foo')         // ['foobar'] not ['', 'foobar']
splitAtSearch('blah bleh bluh', 'bl')  // ['blah bleh bluh']
splitAtSearch('blah bleh bluh', 'ble') // ['blah ', 'bleh bluh']
splitAtSearch('$10.99', '.')           // ['$10', '.99']
splitAtSearch(3.14159, '.')            // ['3', '.14159']

使用以下形式的正则表达式:\ w- \ d +其中\ w代表单词,\ d代表数字。他们开箱即用,所以随便玩吧。试试这个

本文地址:http://javascript.askforanswer.com/zaijavascriptzifuchuanzhongdepozhehaohouhuoqusuoyouneirong.html
文章标签:
版权声明:本文为原创文章,版权归 javascript 所有,欢迎分享本文,转载请保留出处!

文件下载

老薛主机终身7折优惠码boke112

上一篇:
下一篇:

评论已关闭!