📜  Julia 中的字符串格式化

📅  最后修改于: 2022-05-13 01:55:46.214000             🧑  作者: Mango

Julia 中的字符串格式化

Julia 是由麻省理工学院人员开发的高级语言。它是一种开源的高性能语言。它具有类似于Python的简单语法,但具有 C 的速度和性能。

字符串格式化是使用字符串插值(在已知值之间填充未知值)评估字符串字面量的过程,它产生的结果是占位符被替换为其对应的值。

例如:

word="article"
@printf("This is an %s",word)

上面的代码将 '%s' 替换为 word 的值,输出将是:

This is an article

大多数当前语言还提供不同类型的格式说明符和不同的格式化函数。在 Julia 中,有一些类似于 C 的格式说明符:

  • %c:单个字符(字母、数字、特殊符号)
  • %s:字符串(字符的组合)
  • %d:整数(任何整数(不是分数))
  • %f:浮点数(具有浮点小数点的数字)
  • %.nf:浮点数限制为 n 位小数
  • %e:浮点数的科学表示

在 Julia 中有两种格式化字符串的方法。

方法一:使用 Printf 库

Printf 是 Julia 中的一个标准库,包含以下语法:

using Printf

Julia 使用类似于 C 的 printf()函数来格式化字符串。在这里,我们使用宏@printf进行打印。

打印不同的数据类型

字符:在下面的代码中,我们在名为“字符”的变量中存储了一个字母“c”。然后使用 '%c' 格式说明符打印字符变量,因为它的数据类型是 char。为了使说明符功能更易于理解,使用了具有相同数据类型(字符)的另一个变量“character2”。

Julia
using printf
character = 'c';
@printf("the letter is %c", character);
character2 = 'a';
@printf("the two letters are %c and %c",
                 character, character2);


Julia
# Loading Library
using Printf
  
# Creating String
s = "GeeksforGeeks";
  
# Formatting first string
@printf("welcome to %s", s);
  
# Creating second string
s2 = "I love";
  
# Formatting both strings
@printf("%s %s", s2, s);


Julia
using Printf
integer = 33;
@printf("the value is %d",integer);
integer2 = 42;
@printf("the sum is %d + %d = %d",
                integer, integer2, 
                integer + integer2);


Julia
using Printf
floatvalue = 0.08;
@printf("the floating point value is %f", 
                             floatvalue);
floatvalue2 = 1.92;
@printf("the value of %f + %f = %d", 
            floatvalue, floatvalue2,
            floatvalue + floatvalue2);


Julia
using Printf
floatvalue = 20.3658;
@printf("the value of float restricted to 2 decimal places %.2f",
                                                     floatvalue);


Julia
using Printf
floatvalue = 20.3658;
@printf("scientific representation of the floatvalue is %e",
                                                floatvalue);


Julia
using Formatting
  
# to print a string
site = "GeeksforGeeks";
printfmt("Welcome to {:s}", site)
  
# to print a single character
c = 'a';
printfmt("Character is {:c}", c)
  
# to print an integer
num = 40;
printfmt("Integer is {:d}", num)
  
# to print a float value
floatnum = 178.33987;
printfmt("Float value is {:f}", floatnum)
  
# to print a float value 
# restricted to 2 decimal places
printfmt("Restricted to 2 decimal places {:.2f}",
                                        floatnum)
  
# to print a float value 
# in scientific representation
printfmt("Scientific representation {:e}",
                                 floatnum)


在输出中,可以清楚地看到 %c 被替换为第一个 printf 语句中的字符变量的值,而 %c 都被替换为第二个 printf 语句中的字符和 character2 的值。

字符串:在以下示例中,字符串“GeeksforGeeks”存储在变量“s”中,并使用“%s”说明符和 printf 打印。为了使这段代码更容易理解,添加了另一个字符串S2,其值为“我爱”,两个字符串一起打印,使其成为“我爱 GeeksforGeeks”。

朱莉娅

# Loading Library
using Printf
  
# Creating String
s = "GeeksforGeeks";
  
# Formatting first string
@printf("welcome to %s", s);
  
# Creating second string
s2 = "I love";
  
# Formatting both strings
@printf("%s %s", s2, s);

在输出中,您可以看到在第一个 printf 语句中 %s 是如何被 s 的值替换的。同样,在第二个 printf 语句中,%s 都被 s2 和 s 替换。

整数:在下面的代码中,我们定义了一个名为 integer 的变量为 33。然后我们使用 '%d' 说明符打印它。同样,我们又定义了一个变量 integer2 并将其值设置为 42。在第二个 printf 语句中,我们打印了这两个数字的总和。

朱莉娅

using Printf
integer = 33;
@printf("the value is %d",integer);
integer2 = 42;
@printf("the sum is %d + %d = %d",
                integer, integer2, 
                integer + integer2);

在输出中,查看如何将 '%d' 替换为第一个 printf 语句中的整数值。并且,在第二个 printf 语句中,%d、%d 和 %d 被替换为 integer、integer2 和 integer+integer2。

Float:在下面的代码中,我们声明了一个变量“floatvalue”并将其设置为 0.08。然后我们使用 '%f' 说明符打印了这个值。然后我们再初始化一个变量'floatvalue2'并将其设置为1.92。在第二个 printf 语句中,我们使用说明符“%d”和“%f”打印了这两个值的总和。

朱莉娅

using Printf
floatvalue = 0.08;
@printf("the floating point value is %f", 
                             floatvalue);
floatvalue2 = 1.92;
@printf("the value of %f + %f = %d", 
            floatvalue, floatvalue2,
            floatvalue + floatvalue2);

您可以看到在第一个输出中 %f 如何被替换为 0.08,而 %f、%f 和 %d 分别被替换为 0.08、1.92 和 2。 (注意我们如何使用 '%d' 打印这个总和并获得总和的整数值,如果你想获得 sum 的浮点值,你可以使用 '%f' 说明符。)

浮点值限制为小数点后 2 位:假设我们有 pi 的值并且我们想要显示它,但是我们不想显示它的整个值,我们只想打印值“3.14”,即该值应该限制为小数点后 2 位地方。为此,我们使用 %.nf(n 是限制)。

朱莉娅

using Printf
floatvalue = 20.3658;
@printf("the value of float restricted to 2 decimal places %.2f",
                                                     floatvalue);

在此输出中,您可以看到 20.3658 如何打印为 20.37,因为它被四舍五入到小数点后 2 位。

浮点数的科学表示:您可以使用 '%e' 说明符打印出浮点数的科学表示。它通常用于表示非常大或非常小的数字。

朱莉娅

using Printf
floatvalue = 20.3658;
@printf("scientific representation of the floatvalue is %e",
                                                floatvalue);

在此输出中,请注意 'floatvalue' (20.3658) 如何显示为 2.063580e+01。发生这种情况是因为我们使用了 '%e' 说明符并打印出它的科学表示。

方法二:使用Formatting.jl包

Formatting.jl 是一个开源 Julia 包,旨在为 Julia 提供类似Python的格式。这个包在 Github Formatting.jl 上可用。

Installation Command - Pkg.add("Formatting")

我们可以使用 printfmt 或 printfmtln 进行格式化打印。此外,“fmt”和“format”可用于格式化字符串值。

示例:打印不同的数据类型

在此方法中,格式化的完成与Python中的类似。格式说明符放在花括号{}内,“ %”符号被替换为“:” (查看下面的代码)。

朱莉娅

using Formatting
  
# to print a string
site = "GeeksforGeeks";
printfmt("Welcome to {:s}", site)
  
# to print a single character
c = 'a';
printfmt("Character is {:c}", c)
  
# to print an integer
num = 40;
printfmt("Integer is {:d}", num)
  
# to print a float value
floatnum = 178.33987;
printfmt("Float value is {:f}", floatnum)
  
# to print a float value 
# restricted to 2 decimal places
printfmt("Restricted to 2 decimal places {:.2f}",
                                        floatnum)
  
# to print a float value 
# in scientific representation
printfmt("Scientific representation {:e}",
                                 floatnum)

输出

在输出中,您可以看到 {:c}、{:s}、{:d}、{:f}、{:e}、{:.2f} 是如何替换为字符、字符串、整数、浮点数的点数、科学表示法和浮点数分别限制为小数点后 2 位。