String.format (%s, %d) für Nummern

uberl

Mitglied
Ich habe gesehen, dass ein String.format("%d", 1) von der eingestellten Locale abhängt - ein String.format("%s", 1) nicht.

Sollte man daher %s für Nummern verwenden, wenn die Locale irgendwo geändert werden kann ?

Wie lässt sich dann eine Nummer formattieren, OHNE Einfluss der Locale ?
 
M

Marcinek

Gast
Aber das ist doch ein Vorteil oder?

Ich möchte, dass meine Zahlen in meiner Local formatiert werden.
 
T

Tomate_Salat

Gast
Java:
String.format(Locale.GERMANY,"%d",1);

%s verwendet man für Zeichenketten ;-)

[edit]
Ich möchte, dass meine Zahlen in meiner Local formatiert werden.
Nicht immer. Wenn man z.B. damit einen SQLQuery so zusammenbaut, möchte man in so manch einem Fall keine Deutsche formatterung, da es sonst kracht. [/edit]
 

uberl

Mitglied
>>> Nicht immer. Wenn man z.B. damit einen SQLQuery so zusammenbaut, möchte man in so manch einem Fall keine Deutsche formatterung, da es sonst kracht.

Genau !

Aber es spricht nichts gegen String.format("%s", 1) ?
 
T

Tomate_Salat

Gast
Wobei das nur ein Beispiel war. Wenn man kann, sollte man lieber Prepared Statements verwenden ;-)

Aber es spricht nichts gegen String.format("%s", 1)
Ja und nein. Es ist so sinnvoll wie folgendes:
Java:
String alter="1";
Ich würde schon darauf achten, dass der Typ passt. Wenn du dir das angewöhnst und in andere Sprachen übernimmst, kann es sein, dass es kracht (c++ ist da afair strenger).

NAAAIIIINNNN!!!!
Wenn man eine SQL-Query zusammen baut möchte man Bind-Parameter verwenden, sonst haut einen der SQL-Injektor!
Ich dachte mir schon, dass das kommt. Du weißt was ein Beispiel ist ;-)? Naja, dass es keine gute Idee ist, hab ich in diesem Post auch nochmal im ersten Satz geschrieben.
 

uberl

Mitglied
Ich möchte nur nicht immer die Locale mit angeben müssen, wenn ich einen String erzeugen will, welcher die Zahl "1" immer unabhängig von ihrer Locale darstellen soll. Daher muss ich doch String.format("%s", 1) verwenden ?
 
N

nillehammer

Gast
Aber es spricht nichts gegen String.format("%s", 1) ?
Nein, dagegen spricht überhaupt nichts. Aber es wird ja eine Darstellung geben, die Du Dir wünschst. Um bei dem Beispiel Query-String zu bleiben wäre das die englische Darstellung und da kann man ja die entspr. Locale so mitgeben.
 

faetzminator

Gesperrter Benutzer
Einen String in einen int verwandeln? [c]Integer.parseInt(String)[/c]
Einen String in einen Integer verwandeln? [c]Integer.valueOf(String)[/c]
Edit: int in String? [c]String.valueOf(int)[/c]
 
N

nillehammer

Gast
Ist das für so einen Fall die gängige Vorgansweise in Java ? (Komme von C)
Bei Umwandlung von Strings in andere Datentypen und umgekehrt würde ich bei technischen Parametern eher andere Methoden verwenden (z.B. siehe auch faetzminator's letzter Post). Vielfach bieten die Frameworks auch entsprechende transparente Konversionen an. PreparedStatement ist ein Beispiel solch einer transparenten Konversion. Du setzt programmatisch einen int und ein SQL-String wird an die DB gesendet. Ähnliches gibt es auch in Web-Frameworks für die Konversion von Request-Parametern.

Bleibt noch die Anzeige auf einer GUI oder in Logs. Da würde ich im Zweifel die Locale explizit setzen.
 

uberl

Mitglied
Bei einem

Java:
String.format("%d", 1)

gibt es ja das Problem, dass wenn irgendwer die Locale global umsetzt, dann würde der String nicht mehr passen.
 
N

nillehammer

Gast
Log ja, GUI nein.

Ich bin ja der Meinung, dass das OS aus einem bestimmten Grund auf ein bestimmtes Locale eingestellt ist.

Aber vielleicht interpretiere ich da einfach zu viel hinein...
Ja, bei GUI eher nicht. Wollte es aber nicht gänzlich ausschließen. Habe deswegen auch "im Zweifel" geschrieben.
 

uberl

Mitglied
zb. eine Reihe von IP-Adressen, welche dann in einer Schleife für Requests verwendet werden:
192.168.0.10 ... 192.168.0.20

Java:
for(int i=10; i<20; i++) {
   String ip = String.format("192.168.0.%s", i);
   //...
}
 

faetzminator

Gesperrter Benutzer
Ich nehme an, dass dies Java dann implizit macht (bzw auch ein toString()), wenn ich String.format("%s", 1) aufrufe

Kann sein. Trotzdem ist dies nicht der gängige Weg. Conversion hat einfach absolut nichts mit Locale-spezifischer Darstellung zu tun. Dementsprechend kann höchstwarscheinlich [c]Integer.valueOf()[/c] auch kein [c]1,2[/c] parsen - weiss ich aber nicht im Detail (weil wir aus der CH '.' statt ',' als Dezimaltrennzeichen verwenden, was in den Programmiersprachen auch dem normalen Trennzeichen entspricht).

Edit: Randanmerkung zu [c]String.format()[/c] -> noch nie benutzt in 7 Jahren Java.
 
T

Tomate_Salat

Gast
@TO: Wo hast du den da Probleme? Integers sind afaik unabhängig von den Spracheinstellungen. Einen Unterschied macht wohl eher folgendes:
[c]String.format("var alpha=%f;",10.5);[/c]
Das könnte z.b. aus einem Script kommen, dass du rennen lassen willst (um mal vom SQL wegzukommen). Da wäre es erforderlich, das Local.ENGLISH zu setzen.
 

Timothy Truckle

Top Contributor
zb. eine Reihe von IP-Adressen, welche dann in einer Schleife für Requests verwendet werden:
192.168.0.10 ... 192.168.0.20

Java:
for(int i=10; i<20; i++) {
   String ip = String.format("192.168.0.%s", i);
   //...
}
Naja, da stellt sich dass Locale-Problem ja eigentlich nicht...
Aber wenn Du sowieso echte Netzwerkzugriffe vor hast könntest Du auch das nehmen:
http://docs.oracle.com/javase/7/docs/api/java/net/InetAddress.html#getByAddress(byte[])

bye
TT
 

uberl

Mitglied

faetzminator

Gesperrter Benutzer
Dann stelle ich meine Frage nochmal: Welche Anforderung verlangt, dass die Zahl unabhängig vom Locale formatiert wird? Gibt's da 'nen harten Business-Case oder sieht das nur besser aus?

aber im Falle von:

Java:
for(int i=10; i<20; i++) {
   String ip = String.format("192.168.0.%d", i);
   //...
}

gibt es das Problem.

Wir sprechen hier immer noch von einer Conversion von 4 byte (bzw. short / int) in eine IP. Hat immer noch nichts mit einer Locale zu tun.
Was ist nun dein tatsächliches Business Case?
 

uberl

Mitglied
Ich habe erfahren, dass ich mit String.format("192.168.0.%d", 1) aufpassen muss, welche Locale gesetzt ist, damit der erzeugte String auch wirklich die "1" darstellt (verwende ich zB Locale("hi", "IN") dann kommt mir die "1" in der anderen Sprache raus und ich kann den resultieren String dann nicht mehr verwenden)

Daher möchte ich gerne erfahren, ob es hier in JAVA eine Best-Practice gibt.

Ich kann ja auch noch einfach Concat nehmen: "192.168.0." + 1
 
T

Tomate_Salat

Gast
Tatsächlich:
Java:
String.format(new Locale("hi","IN"), "%d", 1)
damit hab ich auf der Console ein [c]?[/c]

Ich kann ja auch noch einfach Concat nehmen: "192.168.0." + 1

So würde ich es lösen. In Java habe ich afair nie ein String.format genutzt (wohingegen ich es in C++ intensiver nutze)

@Timothy Truckle: Ich bin mir nicht sicher, ob das Beispiel mit der IP tatsächlich der Anwendungsfall war ;-).
 
T

Tomate_Salat

Gast
könnte sein, muss aber nicht. Da steht ein zb ("zum Beispiel") davor. Aber darüber zu streiten macht wenig Sinn, die Antwort kennt nur der TO ;).
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
B Schleife erstellen mit String Format "001" bis "999" Java Basics - Anfänger-Themen 2
M String.format Java Basics - Anfänger-Themen 3
S String.format Fehler Java Basics - Anfänger-Themen 12
G String auf Format prüfen Java Basics - Anfänger-Themen 3
A String auf Format überprüfen Java Basics - Anfänger-Themen 7
T String.format Exception Java Basics - Anfänger-Themen 7
C string-Format Java Basics - Anfänger-Themen 6
E formartierte Aussgabe mit JTextPane und String.format Java Basics - Anfänger-Themen 5
J java.util.format => mit String? Java Basics - Anfänger-Themen 2
R String.format() funktioniert nicht Java Basics - Anfänger-Themen 2
G String in Date Format umwandeln Java Basics - Anfänger-Themen 8
M String.format() max. Spaltenbreite Java Basics - Anfänger-Themen 2
R Java 5.0 / String.format - Warning Java Basics - Anfänger-Themen 8
V String Format Java Basics - Anfänger-Themen 4
krgewb String mit Datumsangabe in Long umwandeln Java Basics - Anfänger-Themen 2
D String Groß/Kleinschreibung Ignorieren Java Basics - Anfänger-Themen 4
D Map<String, Integer> sortieren und der reinfolge nach die Glieder abfragen Java Basics - Anfänger-Themen 3
J Ähnlichen String in Liste finden Java Basics - Anfänger-Themen 6
Kartoffel_1 String transformation Java Basics - Anfänger-Themen 7
H String-Operation replace() - Zeichenkette verdoppeln Java Basics - Anfänger-Themen 2
K String analysieren Java Basics - Anfänger-Themen 27
Beowend String zu Date parsen Java Basics - Anfänger-Themen 1
Beowend String auf Satzzeichen überprüfen? Java Basics - Anfänger-Themen 6
H Liste nach String-Länge sortieren Java Basics - Anfänger-Themen 1
String in ArrayList umwandeln Java Basics - Anfänger-Themen 1
I Sass Compiler und String erhalten? Java Basics - Anfänger-Themen 7
Avalon String in Double bzw. Währung konvertieren Java Basics - Anfänger-Themen 6
T Methode akzeptiert String nicht Java Basics - Anfänger-Themen 18
F Arraylist<String>Ein Wort pro Zeile Java Basics - Anfänger-Themen 6
J Schlüsselworte Prüfen, ob ein bestimmtes, ganzes Wort in einem String enthalten ist. Java Basics - Anfänger-Themen 6
N String überprüfen Java Basics - Anfänger-Themen 3
E String zerlegen aus args Java Basics - Anfänger-Themen 1
M Long-Typ in String-Änderung führt zu keinem Ergebnis bei großer Zahl Java Basics - Anfänger-Themen 11
Ostkreuz String Exception Java Basics - Anfänger-Themen 8
W Items löschen aus String Array vom Custom Base Adapter Java Basics - Anfänger-Themen 2
MoxMorris Wie macht man String[] = String[] aus einer anderer Methode? Java Basics - Anfänger-Themen 18
J String Filter Java Basics - Anfänger-Themen 5
S String Array Buchstaben um einen gewissen Wert verschieben Java Basics - Anfänger-Themen 4
R Größter zusammenhängender Block gleicher Zeichen im String Java Basics - Anfänger-Themen 1
XWing Randomizer mit einem String Java Basics - Anfänger-Themen 2
D 2D Char Array into String Java Basics - Anfänger-Themen 2
H Cast von Float nach String klappt nicht Java Basics - Anfänger-Themen 12
I Zerlegen von String Java Basics - Anfänger-Themen 3
B Beliebiger String gegeben Suche Datum in String Java Basics - Anfänger-Themen 6
I String Java Basics - Anfänger-Themen 4
I API - zurückgegebener JSON String lesen und in Entity konvertieren Java Basics - Anfänger-Themen 2
H Zu langen String aufteilen - bequeme Methode? Java Basics - Anfänger-Themen 14
W String einer Textdatei in einzelne Stringobjekte pro Zeile aufteilen Java Basics - Anfänger-Themen 14
belana wie am besten 2D Array von String to Integer Java Basics - Anfänger-Themen 18
J Java To String Methode, Array mit For-Schleife Java Basics - Anfänger-Themen 2
M Kommandozeilenparamter als EINEN String werten Java Basics - Anfänger-Themen 5
M RandomAccessFile int und String gleichzeitig in einer Datei Java Basics - Anfänger-Themen 49
M Prüfen on eine Zahl im String enthalten ist Java Basics - Anfänger-Themen 3
Distanz zwischen zwei Zeichenfolgen in einem String bestimmen Java Basics - Anfänger-Themen 5
Substring in einem String finden Java Basics - Anfänger-Themen 13
BeginnerJava String mit vorgegebener Länge und Buchstaben erzeugen/ mit Leerstellen Java Basics - Anfänger-Themen 8
I Eindeutiger String mit maximaler Anzahl an Zeichen Java Basics - Anfänger-Themen 11
H Interface Wieso "List<String> list = new ArrayList<>[…]" Java Basics - Anfänger-Themen 4
JavaBeginner22 Integer in String umwandeln Java Basics - Anfänger-Themen 7
HolyFUT JSON String in Java Object schreiben - Anführungszeichen rauskriegen? Java Basics - Anfänger-Themen 17
Fodoboo131 RegEx- Umwandlung von String in ausführbares Objekt/ Befehl Java Basics - Anfänger-Themen 9
HolyFUT Input/Output Leerzeichen aus String entfernen - klappt nicht! Java Basics - Anfänger-Themen 13
viktor1 Methoden Methode schreiben static void readText (String filename) {...} zu WordHistogramSample.java Java Basics - Anfänger-Themen 13
ravenz Schleife mit for über String Array „zahlen“und prüfen ob Wert „a“ oder „b“ oder „c“ entspricht (mittels || ) Java Basics - Anfänger-Themen 4
G Position einer unbekannten 3-stelligen-Zahl in einem String finden Java Basics - Anfänger-Themen 15
T String Array Fehler beim Index Java Basics - Anfänger-Themen 3
H Erste Schritte Nach einer Zahl n soll n Mal der String untereinander ausgegeben werden Java Basics - Anfänger-Themen 3
X Datentypen String.equals funktioniert nicht Java Basics - Anfänger-Themen 5
Alen123 String wiederholen mit Schleifen Java Basics - Anfänger-Themen 1
A String split funktioniert nicht, wenn mehr als 1 Ziffer vor dem Zeichen steht nach dem er trennen soll? Java Basics - Anfänger-Themen 4
T String splitten Java Basics - Anfänger-Themen 3
sserio Schwimmen als Spiel. Problem mit to String/ generate a card Java Basics - Anfänger-Themen 4
J Datentypen String in File konvertieren funktioniert nicht Java Basics - Anfänger-Themen 4
T Platzhalter in String? Java Basics - Anfänger-Themen 14
M String mit Variable vergleichen Java Basics - Anfänger-Themen 9
I String Kombination erstellen anhand fortlaufender Zahl (Vertragsnummer) Java Basics - Anfänger-Themen 13
Fats Waller Compiler-Fehler Kann ich einen String und die Summe zweier Char Werte mittels der println Anweisung ausgeben Java Basics - Anfänger-Themen 4
M Wie kann eine Methode (string) eine andere Methode (void) mit zufälligen int-Werten aufrufen? Java Basics - Anfänger-Themen 4
P9cman Vokale in einem String überprüfen mittels Rekursion Java Basics - Anfänger-Themen 8
schredder Strings und reguläre Ausdrücke - Methode mit return string.matches Java Basics - Anfänger-Themen 5
R Ein Multidimensionales String Array initialisieren und Deklarieren Java Basics - Anfänger-Themen 2
H String Repräsentation eines Rechtecks mit Instanz-Methode Java Basics - Anfänger-Themen 8
Dorfschmied Kartesisches Produkt von zwei Liste mit Hashmaps<String,String> erstellen Java Basics - Anfänger-Themen 4
S String mit Int input vergleichen Java Basics - Anfänger-Themen 5
C String/Char-API Java Basics - Anfänger-Themen 13
U Char zu einem String machen Java Basics - Anfänger-Themen 1
B Anzahl Nullen uns Einsen in String ermitteln Java Basics - Anfänger-Themen 3
T Leerzeichen im String entfernen Java Basics - Anfänger-Themen 6
Jose05 Nullpointerexception bei Umwandlung von String zu int Java Basics - Anfänger-Themen 2
O Ich habe einen String und soll mit matches schauen, ob ein Buchstabe zu einer geraden ANzahl im String vorkommt, wie soll das gehen? Java Basics - Anfänger-Themen 7
M String beim einlesen formatieren Java Basics - Anfänger-Themen 12
N null in String replacen Java Basics - Anfänger-Themen 16
R Compiler-Fehler JTable mit XML befüllen | The constructor JTable(Object[], String[]) is undefined Java Basics - Anfänger-Themen 10
M Eclipse kennt keine String Klasse mehr Java Basics - Anfänger-Themen 1
M Frage zur Methode split der Klasse String Java Basics - Anfänger-Themen 32
D String mit int multiplizieren? Java Basics - Anfänger-Themen 16
H Überprüfen ob String Array leer ist Java Basics - Anfänger-Themen 4
A Korrigierte <String> Liste zurückgeben Java Basics - Anfänger-Themen 22
C In String, Buchstaben ersetzen durch andere Buchstaben Java Basics - Anfänger-Themen 26
Poppigescorn String mit mehreren Wörtern füllen? Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben