2016-09-14 4 views
1

문자열 목록을 반복하고 접미사/접두사 "와 연결하고 목록 끝에 마지막 쉼표가 없으면 끝에 쉼표를 추가합니다. "원", "큐브", ​​"바나나"스칼라/자바 템플릿 목록 반복 및 문자열 연결

내 첫 번째 시도는 다음 코드입니다 :

@listStringifier(list: List[String]) = @{ 
    if (list != null && !list.isEmpty) { 
    for ((string, index) <- list.zipWithIndex){if(index != list.size-1){"string",} 
    else{"string"} 
    } 
    } 
} 

하지만 난 아무데도 @listStringifier 사용하는 경우이 기능이 항상 비어

은 출력 예를 구함 .

@listStringifier 블록 내에서 로깅하면 iterating 중이지만 아무 것도 지정하지 않은 것입니다.

@if (list != null && !list.isEmpty) { 
    for ((string, index) <- list.zipWithIndex){if(index != list.size-1){"@string",} 
    else{"@string"} 
    } 
} 

하지만 나중에 변수에 연결된 문자열을 할당 할 수 있도록 내가 여러 번 반복 싶지 않다 :

나는이 다음과 같이 템플릿에 직접 루프에 대한 호출하면 작동 니펫을.

어떤 도움을 주시면 감사하겠습니다

,

답변

3

내가 mkString 당신이 원하는 것을 할 수 있다고 생각 미리 감사

list.mkString("'" , "','" , "'") 
+0

언급 해 주셔서 감사합니다. 제가 찾고있는 것이기 때문에 작은 따옴표를 큰 따옴표로 바꾸었고 매력처럼 작동했습니다. 이렇게 :'list.mkString ("\" ","\ ", \" ","\ "") 도움을 주셔서 감사합니다 – Yeti

+0

그래, 나는 작은 따옴표를 이스케이프 시퀀스에 미쳐 가지 마라. 스칼라에서 Perl의'q { ","} "와 같은 대체 문자열 구분 기호를 사용하는 방법은? – Thilo

+0

나는 짝을 모르겠다. 죄송합니다. – Yeti

1

된 mkString은 우아하게

@listStringifier(list: List[String]) = @{ list mkString("", ",", "") } 

당신이 따옴표 주위하려면이 작업을 수행 할 수 있습니다 당신이 할 수있는 문자열

list.map(str => s""""$str"""").mkString(",") 
+0

'(" "" "" "," "", "" "" " , "" "" ""))'이 요구되었습니다. –

+0

언급 해 주셔서 고마워요. 전에 이것을 시도했지만, 불행하게도 첫 번째와 마지막 기호에 따옴표 만 추가 할 것입니다. – Yeti

+0

@ 예 : 분리 쉼표에도 따옴표를 추가하여 문제를 해결할 수 있습니다. – Thilo