2016-11-18 3 views
-2

스택에받은 아래 코드에 대한 설명이 필요합니다.   오버플로. 문자열 기능을 대문자로 바꾸기

function sentenceCase(input, lowercaseBefore) { 
 
    input = (input === undefined || input === null) ? '' : input; 
 
    if (lowercaseBefore) { 
 
     input = input.toLowerCase(); 
 
    } 
 
    return input.toString().replace(/(^|\. *)([a-z])/g, 
 
    function(match, separator, char) { 
 
     return separator + char.toUpperCase(); 
 
    }); 
 
} 
 

 
var str = 'this is a text. hello world!'; 
 
str = sentenceCase(str); 
 
document.write(str);

이 코드는 문자열이 각 점 (.) 기호 다음에 투자 할 수 있도록합니다. 누군가가 기능 작품을 교체 않는 방법을 설명 할 수 :

return input.toString().replace(/(^|\. *)([a-z])/g, 
function(match, separator, char) { 
    return separator + char.toUpperCase(); 
}); 

업데이트

바꾸기 기능에 대한 separatorchar의 내용은 무엇입니까?

+3

[MDN을 (를) 바꾸시겠습니까?] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace) –

+0

https://regex101.com/r/tc6ZPE/ 2 –

+0

[ask]를 읽으십시오. 핵심 구절 : "검색 및 연구"및 "당신이 직접 해결하지 못하게하는 어려움을 설명하십시오." –

답변

1
input = (input === undefined || input === null) ? '' : input; 

점검 입력 비어 있거나 특히이 점은 소문자 뒤에 모든 경우에 맞게 정규식을 사용

return input.toString().replace(/(^|\. *)([a-z])/g, 
function(match, separator, char) { 
    return separator + char.toUpperCase(); 
}); 

NULL,

/(^|\. *)([a-z])/g 

이면 이것은 처음에 보입니다. 그 직후 a-z 사이의 문자를 찾습니다. 그들이 [a-z] [A-Z]를 수행했다는 메모를하면 함수가 작동하지 않습니다.

function(match, separator, char) { 
    return separator + char.toUpperCase(); 
} 

함수 입력에 대해 대문자로만 반환하는 간단한 람다입니다.

업데이트 :는 정규식 함수와 일치하는 모든 분리 될 수 있지만

세퍼레이터,이 경우의 도트이며, 세퍼레이터가 발견 된 후, 다음 문자는 문자이다.

+0

감사합니다. 이제 나는 조금 분명하다. separator & char은 어떨까요? 구분 기호가.로 구성되어 있습니까? – Amran

+0

@Amran 업데이트가 추가되었습니다. 당신이 알고 싶은 것을 만족하는 답을 찾았다면, 그것을 인정 된 것으로 표시하십시오. – maximdumont

관련 문제