JavaScript에서 문자열의 대시 후 모든 항목 가져오기
IE와 Firefox에서 모두 사용할 수 있는 가장 깨끗한 방법은 무엇입니까?
제 끈은 이렇게 생겼어요.sometext-20202
자, 이제.sometext
대시 뒤의 정수는 길이가 다를 수 있습니다.
그냥 쓸까요?substring
또는 다른 방법이 있나요?
어떻게 하면 좋을까요?
// 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];
Javascript 내장replace()
regex의 기능 및 사용(/(.*)-/
), 대시 문자 앞의 서브스트링을 빈 문자열("")로 대체할 수 있습니다.
"sometext-20202".replace(/(.*)-/,""); // result --> "20202"
AFAIK, 둘 다substring()
그리고.indexOf()
는 Mozilla와 IE 모두에서 지원됩니다.단, 일부 브라우저(esp)의 이전 버전에서는 Subst()가 지원되지 않을 수 있습니다.Netscape/Opera).
게시물에 따르면 다음 방법을 이미 알고 있습니다.substring()
그리고.indexOf()
그래서 코드샘플을 올리지 않겠습니다.
myString.split('-').splice(1).join('-')
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']
최초 발생 후 모든 것을 얻으려고 하는 고객:
뭐랄까"Nic K Cage"
로."K Cage"
.
사용할 수 있습니다.slice
어떤 캐릭터로부터 모든 것을 얻을 수 있습니다.이 경우 첫 번째 공백부터 시작합니다.
const delim = " "
const name = "Nic K Cage"
const result = name.split(delim).slice(1).join(delim) // prints: "K Cage"
또는 OP 문자열에 두 개의 하이픈이 있는 경우:
const text = "sometext-20202-03"
// Option 1
const opt1 = text.slice(text.indexOf('-')).slice(1) // prints: 20202-03
// Option 2
const opt2 = text.split('-').slice(1).join("-") // prints: 20202-03
\w-\d+ 형식의 정규 표현을 사용합니다.\w는 단어를 나타내고 \d는 숫자를 나타냅니다.개봉 후로는 작동하지 않으니 놀아주세요.이거 먹어봐.
사용할 수 있습니다.split
방법을 가르쳐 주세요.특정 패턴에서 문자열을 가져와야 한다면split
요구 사항 exp:
var string = "sometext-20202";
console.log(string.split(/-(.*)/)[1])
다른 모든 사람들은 완벽하게 합리적인 답변을 올렸습니다.나는 다른 방향을 택했다.split, substring 또는 indexOf를 사용하지 않습니다.firefox와 같은 환경에서 잘 작동합니다.Netscape에서도 동작합니다.
그냥 루프 한 번하고 두 개의 if.
function getAfterDash(str) {
var dashed = false;
var result = "";
for (var i = 0, len = str.length; i < len; i++) {
if (dashed) {
result = result + str[i];
}
if (str[i] === '-') {
dashed = true;
}
}
return result;
};
console.log(getAfterDash("adfjkl-o812347"));
내 솔루션은 성능이 뛰어나고 엣지 케이스를 처리합니다.
상기 코드의 포인트는 작업을 지연시키는 것이므로, 실제로 사용하지 말아 주세요.
구분 기호를 사용하여 첫 번째 또는 두 번째 부분을 얻는 방법
//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];
}
언급URL : https://stackoverflow.com/questions/573145/get-everything-after-the-dash-in-a-string-in-javascript
'programing' 카테고리의 다른 글
파이썬 목록을 다른 "하위 목록"으로 분할합니다(예: 더 작은 목록). (0) | 2022.11.03 |
---|---|
동일한 열 값을 가진 특정 행을 mysql 테이블에서 삭제하려면 어떻게 해야 합니까? (0) | 2022.11.03 |
JavaScript에서 문자열을 float로 변환하는 방법 (0) | 2022.11.03 |
SQL 데이터베이스에서 위도와 경도를 사용하여 가장 가까운 위치를 찾는 방법은 무엇입니까? (0) | 2022.11.03 |
MySQL 서버 시작 오류 'PID 파일을 업데이트하지 않고 서버가 종료되었습니다' (0) | 2022.11.03 |