2017-12-13 5 views
-3

질문 : 문자열에서 여러 값으로 대체 - 타이프 라이터

var str = "I have a <animal>, a <flower>, and a <car>."; 

지금 내가 원하는 위 문자열이를위한 최선의 방법을 제안 해주십시오 타이거, 로즈와 BMW

<animal> , <flower> and <car> 

와 아래 교체.

저는 Typescript로 Angular 2 Application을 연구하고 있습니다.

+0

가능한 복제 [자바 스크립트의 모든 문자열을 대체하는 방법?] (HTTPS : //stackoverflow.com/questions/1144783/how-to-replace-all-occurrences-of-a-string-in-javascript) –

+0

@JoeClay 정상적인 문자열은 괜찮습니다.하지만 또는 또는 의 문제가 있습니다. 끈. – AmiDeveloper

+0

http://idownvotedbecau.se/noattempt – Sefe

답변

2

replacer 함수가있는 정규 표현식을 사용하여 각 일치를 평가하고 적절한 대체 코드를 반환 할 수 있습니다. 당신이 타이프 라이터를 사용하는 경우

var str = "I have a <animal>, a <flower>, and a <car>."; 

function replace(source : string, replacements : { [name:string]: string }) { 
    return str.replace( new RegExp("<([A-z]*)>", "g"), (m) => { 
     return replacements[m.substring(1, m.length -1)]; 
    }); 
} 

console.log(replace(str, { 
    "animal" : "Tiger", 
    "flower" : "Rose", 
    "car" : "BMW" 
})) 
+0

덜 자세하게 표현하면, 함수 본문은 다음과 같을 수 있습니다 :'return str.replace (/ <([A-z]*)>/g, m => replacement [m.substring (1, m.length - 1) ])' – Duncan

+0

@Duncan 당신은 그 길이 더 짧습니다.하지만 길쭉한 표현 이었기 때문에 여러 줄로 더 잘 보입니다. –

0

당신이 let str = 'I have a <animal>, a <flower>, and a <car>.'; 참고 각도 스타일 가이드의 추천 작은 따옴표와 https://www.typescriptlang.org/docs/handbook/basic-types.html에 따라 문자열을 선언해야합니다 (연속 배달 파이프 라인에 보풀을 겨 으로, 예를 들어 시행). 대신 코드에 이미 자리를 대체 할 수있는 방법을 대체 일반적인 자바 스크립트로 대체

:

Screenshot code see the backticks here