在IE和Firefox中都能工作的最干净的方法是什么?
我的字符串看起来像这个sometext-20202
现在sometext和破折号后面的整数可以有不同的长度。
我应该使用子字符串和索引还是有其他方法?
在IE和Firefox中都能工作的最干净的方法是什么?
我的字符串看起来像这个sometext-20202
现在sometext和破折号后面的整数可以有不同的长度。
我应该使用子字符串和索引还是有其他方法?
当前回答
高效,紧凑,适用于一般情况:
s='sometext-20202'
s.slice(s.lastIndexOf('-')+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];
你可以使用分裂方法。如果你需要从特定的模式中获取字符串,你可以使用split with req。经验值:
Var string = "sometext-20202"; console.log (string.split (/-(.*)/)[ 1))
使用任何分隔符并获得第一部分或第二部分
//To divide string using deimeter - here @
//str: full string that is to be splitted
//delimeter: like '-'
//part number: 0 - for string befor delimiter , 1 - string after delimiter
getPartString(str, delimter, partNumber) {
return str.split(delimter)[partNumber];
}
我问这个问题是因为我需要OP问的问题,而不是其他答案提供的答案(它们在技术上是正确的,但对我的目的来说太少了)。我已经有了自己的解决方案;也许能帮到别人。
假设你的字符串是'Version 12.34.56'。如果你用'。'来分割,其他答案往往会给你'56',而也许你真正想要的是'.34.56'(即从第一次出现的所有内容而不是最后一次出现的所有内容,但OP的特定情况恰好只有一次出现)。也许你甚至想要“版本12”。
我还编写了这个代码来处理某些失败(比如传入null或空字符串等)。在这些情况下,下面的函数将返回false。
Use
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']
使用内置的javascript replace()函数和使用regex(/(.*)-/),你可以用空字符串("")替换破折号之前的子字符串:
"sometext-20202".replace(/(.*)-/,""); // result --> "20202"