بکندباز

متد format()‎ در جاوا

در این آموزش با استفاده از مثال هایی با متد 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

نکته: در آلمان اعداد صحیح به جای کاما از نقطه برای جدا کردن اعداد استفاده می کنند.

zohreh

مدیر وب سایت بکندباز

دیدگاه‌ها

*
*