در این آموزش با استفاده از مثال هایی با متد format() آشنا می شویم.
متد format() یک رشته را بر اساس آرگومان ارسال شده فرمت کرده و رشته فرمت شده را برمی گرداند.
مثال 3: فرمت دهی رشته با چند شاخص فرمت
شما می توانید از بیش از یک فرمت مشخص کننده در رشته فرمت استفاده کنید. دقیقاً به تعداد شاخص هایی که در رشته srt آمده است باید در args متغیر های جایگزین را ارسال کنیم. در مثال زیر دو شاخص فرمت در رشته آمده است و به ترتیب دو متغیر با همان نوع به عنوان آرگومان به format ارسال شده است.
// using more than one format specifiers
// in a format string
class Main {
public static void main(String[] args) {
int n1 = 47;
String text = "Result";
System.out.println(String.format("%s\nhexadecimal: %x", text, n1));
}
}
خروجی
Result
hexadecimal: 2f
در اینجا، %s
با مقدار text که یک String است جایگزین شده است. به همین ترتیب، %o
با n1 که یک مقدار هگزادسیمال است جایگزین می شود.

مثال 4: قالب بندی اعداد اعشاری
class Main {
public static void main(String[] args) {
float n1 = -452.534f;
double n2 = -345.766d;
// format floating-point as it is
System.out.println(String.format("n1 = %f", n1)); // -452.533997
System.out.println(String.format("n2 = %f", n2)); // -345.766000
// show up to two decimal places
System.out.println(String.format("n1 = %.2f", n1)); // -452.53
System.out.println(String.format("n2 = %.2f", n2)); // -345.77
}
}
خروجی
n1 = -452.533997
n2 = -345.766000
n1 = -452.53
n2 = -345.77
توجه: وقتی با استفاده از شاخص %f
عدد -452.534 را فرمت می کنیم، -452.533997 را دریافت می کنیم . این به خاطر متد format() نیست. جاوا نمایش دقیق اعداد ممیز شناور را بر نمی گرداند .
هنگامی که از شاخص فرمت %.2f
استفاده می شود، format()
تا دو عدد بعد از نقطه اعشار را نمایش می دهد.
مثال 5: پر کردن اعداد با فاصله و 0
اگر در کد شاخص ها، بین علامت درصد (%) و حرف یک عدد قرار دهیم، به اندازه آن عدد، فاصله خالی چاپ می شود. مثلاً اگر به جای %d
بنویسیم %5d
، 5 فاصله خالی گذاشته می شود و پس از آن عدد جایگزین شده قرار می گیرد. حال اگر به جای %5d بنویسیم %05d
به جای 5 فاصله خالی، 5 تا 0 قرار داده خواهد شد.
%+d
: علامت عدد صحیح را نیز نمایش می دهد.
%(d
: عدد جایگزین شده را بین پرانتز قرار می دهد.
// using more than one format specifiers
// in a format string
class Main {
public static void main(String[] args) {
int n1 = 46, n2 = -46;
String result;
// padding number with spaces
// the length of the string will be 5
result = String.format("|%5d|", n1); // | 46|
System.out.println(result);
// padding number with numbers 0
// the length of the string will be 5
result = String.format("|%05d|", n1); // |00046|
System.out.println(result);
// using signs before numbers
result = String.format("%+d", n1); // +46
System.out.println(result);
result = String.format("%+d", n2); // -46
System.out.println(result);
// enclose negative number within parenthesis
// and removing the sign
result = String.format("%(d", n2); // (46)
System.out.println(result);
}
}
مثال 6: استفاده از 0x و 0 قبل از هگزادسیمال و اکتال
با قرار دادن یک علامت # در شاخص های هگزادسیمال و اکتال، قبل از عدد اکتال یک 0 و قبل از عدد هگزادسیمال یک 0x قرار می گیرد که فرمت مرسوم نمایش آن ها است.
// using 0x before hexadecimal
// using 0 before octal
class Main {
public static void main(String[] args) {
int n = 46;
System.out.println(String.format("%#o", n)); // 056
System.out.println(String.format("%#x", n)); // 0x2e
}
}
متد format() با Locale
متد format() دارای سینتکس دیگری نیز است، برای زمانی که باید با یک زبان محلی مشخص کار کنید .
String.format(Locale l,
String format,
Object... args)
نکته: در آلمان اعداد صحیح به جای کاما از نقطه برای جدا کردن اعداد استفاده می کنند.
دیدگاهها