자바-문자열 내에 변수 포함?


114

좋아, 우리 모두는 다음을 수행하여 변수를 문자열에 포함 할 수 있다는 것을 알아야합니다.

String string = "A string " + aVariable;

다음과 같은 방법이 있습니까?

String string = "A string {aVariable}";

, 따옴표를 닫고 더하기 기호를 추가하지 않아도됩니다. 매우 매력적이지 않습니다.


10
@Chandra 이유를 묻지 말고 가능하면 설명하십시오. 내가 그것을 선호하는 방법입니다. 감사.
회색 아담스

3
Groovy를 사용하면 "A string $ {aVariable}"을 원하는대로 수행 할 수 있습니다.
Kaleb Brasee

2
이 질문 에서 논의 된 유사한 것들에 대한 다양한 기술 있지만 String.format()언어에 내장되어 있습니다.
ig0774

@KalebBrasee 완벽하게 들리지만 언어 수정에 관해서는 항상 주저합니다. 나는 내 자신을 되돌리고 싶지 않습니다.
회색 아담스

1
@GrayAdams Groovy는 당신을 되돌려 놓지 않습니다. : D
Kaleb Brasee

답변:


123

항상 String.format (....)을 사용할 수 있습니다. 즉,

String string = String.format("A String %s %2d", aStringVar, anIntVar);

그게 당신에게 충분히 매력적일지는 모르겠지만 꽤 편리 할 수 ​​있습니다. 구문은 printf 및 java.util.Formatter와 동일합니다. 특히 표 형식의 숫자 데이터를 표시하려는 경우 많이 사용했습니다.


2
나는 이것이 의견의 문제라는 것을 알고 있지만 format간단한 문자열 연결 표현식보다 얼마나 매력적인 지 모르겠습니다 . 어디 format당신이 등등 패딩, 숫자 서식을 수행해야 할 때 자체로되어 온다.
스티븐 C

1
@StephenC : 나는 당신과 전혀 동의하지 않습니다. 그러나 특히 위에서 말한대로 패딩을 수행해야 할 때 (즉, 표 형식의 숫자 데이터를 표시하기 위해) String 형식화에 유용한 대안입니다. 나는 혈액 화학 및 CBC 결과 보고서를 형식화하는 데 꽤 많이 사용했습니다.
Hovercraft Full Of Eels 2011 년

@StephenC 나는 몇 가지 이유로 형식을 좋아합니다. 우선 '% d'는 플랫폼 줄 구분 기호를 사용합니다. 둘째, 끝에서 모든 변수를 쉽게 찾을 수 있습니다. 입력 한 변수의 형식을 쉽게 변경하거나 순서를 변경할 수도 있습니다. 1 + "oops"특히 FindBugs (형식 문자열 및 입력 매개 변수 구문 분석)를 사용하는 경우 실수 (예 :)를 피하는 것이 더 쉽습니다 . 그리고 질문자가 말했듯이 대부분의 경우 더 읽기 쉽습니다. 물론이 format방법이 정적으로 만들어 졌다는 것은 부끄러운 일이다. 그것은 다소 어리석은 디자인 실수였다.
Maarten Bodewes

@owlstead- "물론, 포맷 방법이 정적으로 만들어 졌다는 것은 부끄러운 일입니다. 그것은 다소 어리석은 디자인 실수였습니다." . 어? 어떻게 할 format대상 문자열 관련? 분명히 당신은 우리가 글을 써야한다고 제안하는 것이 아닙니다 "A String %s %2d".format(aStringVar, anIntVar)... 그렇습니까?
Stephen C

1
@owlstead- "asFormat"이 옳지 않습니다. 메서드가 형식 개체를 만들고 반환하고 있음을 의미합니다.
스티븐 C

70

이를 문자열 보간이라고합니다. Java에는 존재하지 않습니다.

한 가지 방법은 String.format을 사용하는 것입니다.

String string = String.format("A string %s", aVariable);

또 다른 접근 방식은 Velocity 또는 FreeMarker 와 같은 템플릿 라이브러리를 사용하는 것 입니다.


38

또한 java.text.MessageFormat숫자 인수 인덱스가있는 관련 구문을 사용하는을 고려하십시오 . 예를 들면

String aVariable = "of ponies";
String string = MessageFormat.format("A string {0}.", aVariable);

다음을 string포함합니다.

A string of ponies.

더 일반적으로 클래스는 숫자 및 시간 형식화에 사용됩니다. 여기 에는 JFreeChart레이블 형식화 의 예가 설명되어 있습니다 . 클래스 RCInfo는 게임의 상태 창을 포맷합니다.


1
CSharp에서 오는 누군가에게는 C #의 string.Format과 유사하기 때문에이 방법이 더 간단합니다.
Mojtaba

0

문자열 형식을 사용하여 문자열 내에 변수를 포함 할 수 있습니다.

이 코드를 사용하여 문자열에 2 개의 변수를 포함합니다.

String myString = String.format ( "이것은 내 문자열 % s % 2d", variable1Name, variable2Name);

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.