IT이야기

문자열 변수 보간 Java

cyworld 2022. 6. 5. 19:15
반응형

문자열 변수 보간 Java

자바에서의 문자열 구축은 나를 혼란스럽게 한다.나는 다음과 같은 일을 하는 것을 싫어한다.

url += "u1=" + u1 + ";u2=" + u2 + ";u3=" + u3 + ";u4=" + u4 + ";";
url += "x=" + u1 + ";y=" + u2 + ";z=" + u3 + ";da1=" + u4 + ";";
url += "qty=1;cost=" + orderTotal + ";ord=" + orderId + "?";

String Builder를 사용하면 다음과 같습니다.

    url.append("u1=");
    url.append(u1);
    url.append(";u2=");
    url.append(u2);
    url.append(";u3=");
    url.append(u3);
    url.append(";u4=");
    url.append(u4);
    url.append(";");
    url.append("x=");
    url.append(u1);
    url.append(";y=");
    url.append(u2);
    url.append(";z=");
    url.append(u3);
    url.append(";da1=");
    url.append(u4);
    url.append(";");
    url.append("qty=1;");
    url.append("cost=");
    url.append(orderTotal);
    url.append(";ord=");
    url.append(orderId);
    url.append("?");

확실히 내가 뭔가 놓치고 있어.더 나은 방법이 있을 거야예를 들어 다음과 같습니다.

대신:

urlString += "u1=" + u1 + ";u2=" + u2 + ";u3=" + u3 + ";u4=" + u4 + ";";

다음 작업을 수행합니다.

urlString += Interpolator("u1=%s;u2=%s;u3=%s;u4=%s;", u1, u2, u3, u4);

또는 다음과 같이 입력합니다.

urlStringBuilder.append(Interpolator("u1=%s;u2=%s;u3=%s;u4=%s;", u1, u2, u3, u4));

Java 5 이상을 사용하는 경우 다음을 사용할 수 있습니다.

urlString += String.format("u1=%s;u2=%s;u3=%s;u4=%s;", u1, u2, u3, u4);

자세한 것은, 을 참조해 주세요.

Java 에서는 변수 보간은 없습니다.변수 보간은 문자열 내의 값을 사용한 변수 치환입니다.Ruby의 예:

#!/usr/bin/ruby

age = 34
name = "William"

puts "#{name} is #{age} years old"

Ruby 인터프리터는 자동으로 변수를 문자열 내의 값으로 바꿉니다.우리가 보간할 것이라는 사실은 표식 문자에 의해 암시된다.루비에서는 #{}입니다.Perl에서는 $, % 또는 @ 중 하나입니다.Java는 이러한 문자만 인쇄하고 전개하지 않습니다.

Java에서는 변수 보간이 지원되지 않습니다.이것 대신 문자열 포맷이 있습니다.

package com.zetcode;

public class StringFormatting 
{
    public static void main(String[] args) 
    {
        int age = 34;
        String name = "William";

        String output = String.format("%s is %d years old.", name, age);
    
        System.out.println(output);
    }
}

Java에서는 String을 사용하여 새 문자열을 만듭니다.format() 메서드입니다.결과는 같지만 방법은 다르다.

http://en.wikipedia.org/wiki/Variable_interpolation 를 참조해 주세요.

2019년 현재, JEP 326(원시 문자열 리터럴)은 철회되고 여러 JEP로 대체되어 결국 JEP 378: 텍스트 블록이 Java 15로 전달되었습니다.

텍스트 블록은 대부분의 이스케이프 시퀀스의 필요성을 회피하고 예측 가능한 방법으로 문자열을 자동으로 포맷하며 필요에 따라 개발자에게 형식을 제어할 수 있는 여러 줄의 문자열 리터럴입니다.

단, 문자열 보간은 아직 없습니다.

비목표: …텍스트 블록은 문자열 보간을 직접 지원하지 않습니다.보간은 향후 JEP에서 고려될 수 있다.한편, 새로운 인스턴스 메서드는 보간이 필요할 수 있는 상황에서 도움이 됩니다.

덧붙이자면 java.text도 있습니다.숫자 인수 인덱스를 사용할 수 있는 MessageFormat.

설명서에서 첫 번째 예 추가

int planet = 7;
String event = "a disturbance in the Force";

String result = MessageFormat.format(
    "At {1,time} on {1,date}, there was {2} on planet {0,number,integer}.",
    planet, new Date(), event);

결과:

At 12:30 PM on Jul 3, 2053, there was a disturbance in the Force on planet 7.

String.format() 살려주세요!!

JVM용 슈퍼 자바인 Kotlin을 사용하면 ES5, Ruby, Python과 같은 문자열을 삽입할 수 있습니다.

class Client(val firstName: String, val lastName: String) {
    val fullName = "$firstName $lastName"
}

언급URL : https://stackoverflow.com/questions/6389827/string-variable-interpolation-java

반응형