내가 좋아하는 뭔가를 설정하는 자바 스크립트 정규식 명령을 얻기 위해 노력했습니다 "thisString"
에 "This String"
내가 가까이서 보는이 같은 결과 편지를 대체하지만, "Thi String"
또는 "This tring"
. 어떤 아이디어?
문자를 대문자로 표기하는 단순성을 처리 할 수 있음을 분명히하기 위해 RegEx만큼 강력하지 않으며 문제가있는 곳 "somethingLikeThis"
으로 나눕니다 "something Like This"
.
답변
"thisStringIsGood"
// insert a space before all caps
.replace(/([A-Z])/g, ' $1')
// uppercase the first character
.replace(/^./, function(str){ return str.toUpperCase(); })
표시
This String Is Good
답변
특히 xmlHTTPRequest와 같은 일련의 대문자를 처리하는 데 유휴 관심이있었습니다. 나열된 함수는 “Xml HTTP Request”또는 “Xml HTTPRequest”를 생성하고, “Xml HTTP Request”를 생성합니다.
function unCamelCase (str){
return str
// insert a space between lower & upper
.replace(/([a-z])([A-Z])/g, '$1 $2')
// space before last upper in a sequence followed by lower
.replace(/\b([A-Z]+)([A-Z])([a-z])/, '$1 $2$3')
// uppercase the first character
.replace(/^./, function(str){ return str.toUpperCase(); })
}
gist 에는 String.prototype 버전도 있습니다 .
답변
이것은 정규식 lookahead ( live demo ) 로 간결하게 수행 할 수 있습니다 .
function splitCamelCaseToString(s) {
return s.split(/(?=[A-Z])/).join(' ');
}
( g
(전역) 플래그가 필요 하다고 생각 했지만 이상하게 도이 특별한 경우는 아닙니다.)
lookahead를 with와 함께 사용 split
하면 일치하는 대문자가 사용되지 않고 UpperCamelCase가 처리해야하는 경우 선행 공백을 처리하지 않습니다. 각각의 첫 글자를 대문자로 사용하려면 다음을 사용할 수 있습니다.
function splitCamelCaseToString(s) {
return s.split(/(?=[A-Z])/).map(function(p) {
return p.charAt(0).toUpperCase() + p.slice(1);
}).join(' ');
}
map
배열 방법은 ES5 기능입니다,하지만 당신은 여전히 함께 이전 버전의 브라우저에서 사용할 수 있습니다 MDC에서 일부 코드 . 또는 for
루프를 사용하여 배열 요소를 반복 할 수 있습니다 .
답변
나는 이것이 간단한 낙타 케이스뿐만 아니라 연속 대문자를 처리 할 수 있어야한다고 생각합니다.
예 : someVariable => someVariable이지만 ABCCode! = ABC Code입니다.
아래 정규식은 예제에서 작동하지만 camcelCase에서 약어를 나타내는 일반적인 예제입니다.
"somethingLikeThis"
.replace(/([a-z])([A-Z])/g, '$1 $2')
.replace(/([A-Z])([a-z])/g, ' $1$2')
.replace(/\ +/g, ' ') => "something Like This"
"someVariableWithABCCode"
.replace(/([a-z])([A-Z])/g, '$1 $2')
.replace(/([A-Z])([a-z])/g, ' $1$2')
.replace(/\ +/g, ' ') => "some Variable With ABC Code"
첫 번째 문자를 대문자로 바꾸려면 위와 같이 조정할 수도 있습니다.
답변
function spacecamel(s){
return s.replace(/([a-z])([A-Z])/g, '$1 $2');
}
spacecamel ( ‘somethingLikeThis’)
// 반환 값 : 이와 같은
답변
Lodash 는 이것을 잘 처리합니다._.startCase()
답변
숫자도 처리하는 솔루션 :
function capSplit(str){
return str.replace
( /(^[a-z]+)|[0-9]+|[A-Z][a-z]+|[A-Z]+(?=[A-Z][a-z]|[0-9])/g
, function(match, first){
if (first) match = match[0].toUpperCase() + match.substr(1);
return match + ' ';
}
)
}
여기에서 테스트했습니다 [JSFiddle, 라이브러리 없음. 시도하지 않은 IE]; 꽤 안정적이어야합니다.