format()
متد format() یک «رشته (String)» قالب بندی شده برمی گرداند. این کار با «محلی (Locale)»، «الگو (Format)» و «آرگومان ها (Arguments)» انجام می شود. تمرکز ما «متد format جاوا» است.
تعریف و کاربرد متد format جاوا
اگر Locale ندهی، از Locale.getDefault() استفاده می شود. داده های آرگومان ها داخل «جای نگهدارها (%)» می نشینند. نوع نمایش را حروف بعد از % تعیین می کند.
نمونه ساده
String myStr = "Hello %s! One kilobyte is %,d bytes.";
String result = String.format(myStr, "World", 1024);
System.out.println(result);
ساختار جای نگهدار
الگو این است: %[arg$][flags][width][.precision]conversion. بخش های داخل براکت اختیاری هستند.
- arg$: شماره آرگومان؛ یا از < برای تکرار قبلی.
- flags: مثل
-،#،+، فاصله،0،,،(. - width: حداقل عرض خروجی.
- .precision: تعداد رقم اعشار.
- conversion: نوع نمایش؛ مثلاً
s،d،f،t.
تبدیل های مهم
%: چاپ خود درصد.n: رفتن به خط جدید.s/S: رشته؛ با S بزرگ، حروف بزرگ می شود.d: عدد صحیح ده دهی.f: عدد اعشاری.e/E: نمایش علمی.t/T: تاریخ/زمان با حرف دوم مشخص کننده.
سینتکس
public static String format(Locale locale, String format, Object... args)
public static String format(String format, Object... args)
نمونه های بیشتر
استفاده از همه اجزا
String result = String.format("%2$,3.2f %1$s", "meters", 1260.5052);
System.out.println(result);
تغییر ترتیب آرگومان ها
String result = String.format("%3$c %2$c %1$c", 'a', 'b', 'c');
System.out.println(result);
قالب بندی عدد اعشاری
double myNumber = 123456.78;
String result;
result = String.format("%f", myNumber);
System.out.println(result);
result = String.format("%.2f", myNumber);
System.out.println(result);
result = String.format("%.0f", myNumber);
System.out.println(result);
result = String.format("%#.0f", myNumber);
System.out.println(result);
result = String.format("%,.2f", myNumber);
System.out.println(result);
result = String.format("%.2e", myNumber);
System.out.println(result);
قالب بندی تاریخ از Unix Timestamp
long date = 1711638903488L;
String result;
result = String.format("%tl:%<tM %<tp", date);
System.out.println(result);
result = String.format("%tB %<te", date);
System.out.println(result);
result = String.format("%tc", date);
System.out.println(result);
نمایش کاراکترها از کُد یونیکد
String result;
result = String.format("%c%c%c%c%c", 72, 101, 108, 108, 111);
System.out.println(result);
result = String.format("%C%C%C%C%C", 72, 101, 108, 108, 111);
System.out.println(result);
گام های عملی سریع
- الگو را بنویس؛ جای نگهدارها را مشخص کن.
- آرگومان ها را به ترتیب آماده کن.
String.format()را صدا بزن و چاپ کن.
نکته: اگر فرمت نامعتبر باشد، خطای IllegalFormatException رخ می دهد. همچنین نمایش جداکننده ها به Locale وابسته است.
جمع بندی سریع
- format یک رشته قالبی می سازد.
- Locale روی خروجی اثر دارد.
- % نوع نمایش را تعیین می کند.
- ترتیب آرگومان ها قابل جابه جایی است.