Строковая переменная интерполяция Java [дубликат]



этот вопрос уже есть ответ здесь:




  • Как форматировать строки в Java

    6 ответов



строковое построение на 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 + "?";


или, используя StringBuilder, что-то вроде этого:



    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 + ";";


do:



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));
593   5  

5 ответов:

Если вы используете Java 5 или выше, вы можете использовать String.format:

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

посмотреть Formatter для сведения.

обратите внимание, что в Java нет интерполяции переменных. Интерполяция переменной-это подстановка переменной со значением внутри строки. Пример в Ruby:

#!/usr/bin/ruby

age = 34
name = "William"

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

интерпретатор Ruby автоматически заменяет переменные своими значениями внутри строки. На то, что мы будем делать интерполяцию, намекают символы сигил. в 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, мы строим новую строку, используя строку.метод format (). Результат один и тот же, но методы разные.

см.http://en.wikipedia.org/wiki/Variable_interpolation

просто добавить, что есть еще java.текст.MessageFormat С преимуществом наличия числовых индексов аргументов.

добавление 1-го примера из документации

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() на помощь!!

вы можете использовать Kotlin, супер (уступка) Java для JVM, он имеет хороший способ интерполяции строк, таких как ES5, Ruby и Python.

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

Comments

    Ничего не найдено.