在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代表数字。他们开箱即用,所以随便玩吧。试试这个。
文章标签:javascript
版权声明:本文为原创文章,版权归 javascript 所有,欢迎分享本文,转载请保留出处!
评论已关闭!