در این آموزش با استفاده از مثال هایی با متد format() آشنا می شویم.
متد format() یک رشته را بر اساس آرگومان ارسال شده فرمت کرده و رشته فرمت شده را برمی گرداند.
مثال
class Main {
public static void main(String[] args) {
String str = "Java";
// format string
String formatStr = String.format("Language: %s", str);
System.out.println(formatStr);
}
}
// Output: Language: Java
سینتکس متد format()
سینتکس متد format() به صورت زیر است:
String.format(String str, Object... args)
در اینجا،
format()
یک متد ثابت است. ما متدformat()
را با استفاده از نام کلاسString
فراخوانی می کنیم .str
رشته ای است که به عنوان قالب فرمت دهی استفاده می شود....
در کد بالا به این معنی است که شما می توانید بیش از یک شیء را بهformat()
ارسال کنید.
پارامترهای format()
متد format() دو پارامتر دارد.
- str – رشته ای است که به عنوان قالب فرمت دهی استفاده می شود.
- args – صفر یا چند آرگومان
مقدار بازگشتی متد format()
- یک رشته فرمت شده را برمی گرداند
مثال 1: متد format()
class Main {
public static void main(String[] args) {
String language = "Java";
int number = 30;
String result;
// format object as a string
result = String.format("Language: %s", language);
System.out.println(result); // Language: Java
// format number as a hexadecimal number
result = String.format("Hexadecimal Number: %x", number); // 1e
System.out.println(result); // Hexadecimal Number: 1e
}
}
در برنامه بالا به کد توجه کنید:
result = String.format("Language: %s", language);
در اینجا، "Language: %s"
یک قالب است .
%s
در قالب با محتوای language جایگزین می شود. %s
مشخص کننده فرمت است که باید با یک مقدار رشته ای جایگزین شود.
به طور مشابه، %x
با مقدار هگزادسیمال جایگزین می شود. مانند number در String.format("Number: %x", number)
شاخص های فرمت
در اینجا شاخص های فرمت رایج مورد استفاده قرار می گیرند:
شاخص | شرح |
---|---|
%b ،%B |
"true" یا "false" بر اساس آرگومان |
%s ،%S |
یک رشته |
%c ،%C |
یک کاراکتر یونیکد |
%d |
یک عدد صحیح اعشاری (فقط برای اعداد صحیح استفاده می شود) |
%o |
یک عدد صحیح هشتگانه (فقط برای اعداد صحیح استفاده می شود) |
%x ،%X |
یک عدد صحیح هگزادسیمال (فقط برای اعداد صحیح استفاده می شود) |
%e ،%E |
برای نماد علمی (برای اعداد ممیز شناور استفاده می شود) |
%f |
برای اعداد اعشاری (برای اعداد ممیز شناور استفاده می شود) |
مثال 2: فرمت دهی اعداد در رشته
class Main {
public static void main(String[] args) {
int n1 = 47;
float n2 = 35.864f;
double n3 = 44534345.76d;
// format as an octal number
System.out.println(String.format("n1 in octal: %o", n1)); // 57
// format as hexadecimal numbers
System.out.println(String.format("n1 in hexadecimal: %x", n1)); // 2f
System.out.println(String.format("n1 in hexadecimal: %X", n1)); // 2F
// format as strings
System.out.println(String.format("n1 as string: %s", n1)); // 47
System.out.println(String.format("n2 as string: %s", n2)); // 35.864
// format in scientific notation
System.out.println(String.format("n3 in scientific notation: %g", n3)); // 4.45343e+07
}
}
خروجی
n1 in octal: 57
n1 in hexadecimal: 2f
n1 in hexadecimal: 2F
n1 as string: 47
n2 as string: 35.864
n3 in scientific notation: 4.45343e+07
مثال 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)
مثال 7: استفاده از زبان آلمانی (Locale.GERMAN) در متد format()
// to use Locale
import java.util.Locale;
class Main {
public static void main(String[] args) {
int number = 8652145;
String result;
// using the current locale
result = String.format("Number: %,d", number);
System.out.println(result);
// using the GERMAN locale as the first argument
result = String.format(Locale.GERMAN, "Number in German: %,d", number);
System.out.println(result);
}
}
خروجی
Number: 8,652,145
Number in German: 8.652.145
نکته: در آلمان اعداد صحیح به جای کاما از نقطه برای جدا کردن اعداد استفاده می کنند.
دیدگاهها