포맷 방법을 반전시킵니다.
Format
String 클래스 의 메소드 (또는 같은 등가 sprintf
)는 대부분의 언어에서 사용할 수 있습니다. 기본적으로 "서식"문자열이 필요합니다. 여기에는 추가 서식이있는 자리 표시 자와 해당 자리 표시 자 대신 0 개 이상의 값이 삽입 될 수 있습니다.
당신의 임무는 선택한 언어로 역함수를 구현하는 것입니다.
API
메소드 이름은 format1
또는 이어야합니다 deformat
.
입력 : 첫 번째 매개 변수는 원래 형식 방법에서와 같이 "형식"문자열입니다. 두 번째 매개 변수는 구문 분석 된 문자열입니다 (아래 예 참조). 다른 매개 변수는 필요하지 않습니다.
출력 : 형식의 자리 표시 자와 함께 추출 된 값의 배열 (또는 선택 언어와 동등한 값)입니다.
자리 표시입니다 {0}
, {1}
, {2}
, 등
잘못된 형식의 경우 오류가 발생하거나 원하는 것을 반환 할 수 있습니다.
잘못된 입력의 경우 오류가 발생하거나 원하는 것을 반환 할 수 있습니다. 동일한 형식 문자열을 사용하여 String.Format에서 생성 할 수없는 입력이 올바르지 않습니다 (예 :) '{0}{0}', 'AAB'
.
예
deformat('{0} {1}', 'hello world') => ['hello', 'world']
deformat('http{0}://', 'https://') => ['s']
deformat('http{0}://', 'http://') => [''] // array of one item which is an empty string
deformat('{0}{1}{0}', 'ABBA') => ['A', 'BB']
모호
모호한 경우 적절한 답변을 반환 할 수 있습니다. 예를 들면 다음과 같습니다.
deformat('{0} {1}', 'Edsger W. Dijkstra')
// both ['Edsger', 'W. Dijkstra'] and ['Edsger W.', 'Dijkstra'] are applicable.
더 많은 규칙
- 더 쉽게 만들기 위해 실제로 서식을 지원할 필요가 없습니다. 선행 0, 소수점 또는 반올림 문제에 대한 모든 것을 잊을 수 있습니다. 값을 문자열로 생성하십시오.
- 사소하지 않게하기 위해 정규 표현식은 허용되지 않습니다 .
- 입력에서 중괄호를 처리 할 필요가 없습니다 (즉, 두 번째 입력 매개 변수에
{
s 또는}
s가 포함되지 않음 ).
승리
이것은 코드 골프입니다 ! ( "이것은 스파르타입니다!"로 읽어야합니다.) 가장 짧은 길이의 올바른 기능이 승리합니다. 표준 허점 은 금지되어 있습니다.
['', 'AAAA']
, ['A', 'AA']
,['AA', '']
deformat('{0}{1}{0}', 'ABBA') => ['', 'ABBA']
있습니까? 그렇다면 모든 문자열이 두 번 이상 나타나지 않으면 저렴한 솔루션이 있습니다.
deformat('{0}_{1}_{0}', 'A_BB_A')
있습니까?
deformat('{0}{1}{0}', 'ABBA') => ['A', 'BB']
에서 대신 우리에게 주어진다면deformat('{0}{1}{0}', 'AAAA')
?