2013-07-08 8 views
23

Jestem nowicjuszem w języku Java i używam języka Python. W języku Python formatowanie ciągów jest następujące:Java: formatowanie ciągów z symbolami zastępczymi

>>> x = 4 
>>> y = 5 
>>> print("{0} + {1} = {2}".format(x, y, x + y)) 
4 + 5 = 9 
>>> print("{} {}".format(x,y)) 
4 5 

Jak mogę replikować to samo w Javie?

Odpowiedz

45

Klasa MessageFormat wygląda co jesteś po

System.out.println(MessageFormat.format("{0} + {1} = {2}", x, y, x + y)); 
+1

Z zastrzeżeniem, że 'MessageFormat.format' nie radzi sobie z pustym miejscem przechowywania' {} '. –

+0

... i zastrzeżenie, że jeśli użyjesz '' {'to nie rozpozna nawiasów –

10

Java ma metodę String.format podobną do tej. Here's an example of how to use it. To jest documentation reference, który wyjaśnia, jakie mogą być wszystkie opcje %.

A oto wplatany przykład:

package com.sandbox; 

public class Sandbox { 

    public static void main(String[] args) { 
     System.out.println(String.format("It is %d oclock", 5)); 
    }   
} 

Drukuje "Jest 5 oclock".

+1

Ten '%' formatowanie ciąg oparty jest podobna do [w starym stylu. formatowanie) (http://docs.python.org/2/tutorial/inputoutput.html#old-string-formatting) używane w Pythonie, OP używa [formatowania ciągów w nowym stylu] (http: //docs.python .org/2/library/string.html # formatspec) –

+0

Ah, od pytania nie wiedziałem, że on wkłada tyle emp hasis o użyciu nawiasów klamrowych. Pomyślałem, że chciałby tylko sformatować ciąg bez łączenia łańcuchów i zmiennych. –

+1

Dzięki za komentarz btw. W przeciwnym razie nie zrozumiałbym, dlaczego @rgettman zyskiwał tyle recenzji. –

3

Można to zrobić (za pomocą String.format):

int x = 4; 
int y = 5; 

String res = String.format("%d + %d = %d", x, y, x+y); 
System.out.println(res); // prints "4 + 5 = 9" 

res = String.format("%d %d", x, y); 
System.out.println(res); // prints "4 5"