Scala-字符串(拼接、printf格式化输出等)-用法详解

Scala


一、 使用 + 号连接字符串

  • 在 Scala 中,+ 运算符实际上会调用 String 类的 concat 方法或者使用字符串的加法操作,生成一个新的字符串。

  • 字符串是不可变的,每次拼接都会创建一个新的字符串。

Mr. yu



  • Tips
    • 性能相对较差 ,特别是拼接大量字符串时。因为每次拼接都会创建一个新的字符串对象导致频繁的内存分配和垃圾回收(GC)。

二、 使用 printf 格式化字符串

类似于 C 语言中的 printf 函数,也可以用来控制输出的格式,比如指定数字的小数位数、输出的宽度等。

占位符 用途 示例格式 解释 示例代码 输出示例
%s 字符串 %s 格式化字符串 printf("Hello, %s!\n", "yushifu") Hello, yushifu!
%d%i 十进制整数 %d 格式化整数 printf("I am %d years old.\n", 30) I am 30 years old.
%f 浮动小数(浮点数) %.2f 格式化浮动小数 printf("Pi is approximately %.2f.\n", 3.14159) Pi is approximately 3.14.
%e%E 科学计数法 %.2e 格式化浮动小数为科学计数法 printf("Large number: %.2e\n", 123456.789) Large number: 1.23e+05
%x 十六进制数(小写) %x 格式化为小写十六进制 printf("Hexadecimal: %x\n", 255) Hexadecimal: ff
%X 十六进制数(大写) %X 格式化为大写十六进制 printf("Hexadecimal: %X\n", 255) Hexadecimal: FF
%o 八进制数 %o 格式化为八进制 printf("Octal: %o\n", 64) Octal: 100
%c 单个字符 %c 格式化字符 printf("Character: %c\n", 'A') Character: A
%% 百分号 %% 输出字面百分号 printf("Discount: %d%%\n", 20) Discount: 20%
%5d 整数最小宽度 5 %5d 输出宽度为5的整数,右对齐 printf("Number: %5d\n", 42) Number: 42
%-5d 整数最小宽度 5,左对齐 %-5d 输出宽度为5的整数,左对齐 printf("Left-aligned: %-5d\n", 42) Left-aligned: 42
%.3f 浮动小数精度为3 %.3f 格式化浮动小数保留3位小数 printf("Pi: %.3f\n", 3.14159) Pi: 3.142
%05d 整数最小宽度5,填充零 %05d 输出宽度为5的整数,空白部分用零填充 printf("Padded with zeros: %05d\n", 42) Padded with zeros: 00042
%+d 显示符号(包括正号) %+d 输出整数时,显示符号 printf("Signed number: %+d\n", 42) Signed number: +42
% d 显示符号(包括空格) % d 输出整数时,正数前显示空格 printf("Signed number with space: % d\n", 42) Signed number with space: 42
  • 格式控制选项
    • 最小宽度 (如 %5d):指定输出的最小宽度,如果输出的数字或字符不足宽度,则填充空格(默认右对齐)。
    • 左对齐 (如 %-5d):指定输出左对齐。
    • 精度 (如 %.3f):控制浮动小数的显示精度。
    • 填充零 (如 %05d):用零填充空白位置。
    • 符号控制 (如 %+d):强制显示符号,正数显示 +,负数显示 -% d 只对正数加空格。

三、字符串插值(String Interpolation)

  • Scala 提供了三种常见的字符串插值方式:s 插值、f 插值和 raw 插值。
3.1 使用 s 插值字符串
  • 在字符串前加上 s,然后用 ${} 包裹要插入的变量或表达式。
  • s 插值会自动将 $ 后面的变量值插入到字符串中 。如果需要插入的部分是一个表达式,可以将表达式放在花括号 {} 中。


官网示例:


  • 复杂的表达式,可以把表达式放在 {} 中:


官网示例:

eg.如果要插入的是复杂的表达式,使用 {} 是必须的。

scala 复制代码
val radius = 3
val area = s"The area of a circle with radius $radius is ${Math.PI * radius * radius}."
println(area)  // 输出: The area of a circle with radius 3 is 28.274333882308138.

官网示例:


3.2 使用 f 插值字符串
  • 提供了一种简洁且类型安全的方式来格式化字符串,比如控制数字的小数位数、对齐方式等,类似于 printf
scala 复制代码
f"$表达式%格式"
  • f 表示我们正在使用 f 字符串插值器。
  • $表达式 表示你想要格式化的变量或表达式。
  • %格式 是指定对该表达式应用的格式。
  • $name%sname 变量格式化为字符串,%s 是格式化字符串的格式说明符,表示将变量作为字符串输出。
  • $height%2.2fheight 变量格式化为浮动小数,保留两位小数,输出 1.90

%.2f 保留 pi 的两位小数


f 插值器的一个重要特性是类型安全。确保格式化字符串的格式符和变量的类型匹配。如果类型不匹配,Scala 编译器会在编译时产生错误。

  • %d --- 格式化整数。
  • %f --- 格式化浮动小数。
  • %s --- 格式化字符串。
  • %x --- 格式化为十六进制。
  • %4.2f --- 格式化浮动小数,保留 4 位总数,其中 2 位在小数点后。

这样会输出包含 % 符号的字符串,而不会将其误认为是格式化符。


3.3 使用 raw 插值字符串

raw 插值不处理转义字符(如 \n),直接将字符串中的转义符输出为文字。



不处理转义字符:


各位看客老爷万福金安,一键三连呀🤣🤣🤣 谢谢啦~

相关推荐
Dream_Snowar2 分钟前
速通Python 第三节
开发语言·python
Data跳动27 分钟前
Spark内存都消耗在哪里了?
大数据·分布式·spark
高山我梦口香糖1 小时前
[react]searchParams转普通对象
开发语言·前端·javascript
woshiabc1111 小时前
windows安装Elasticsearch及增删改查操作
大数据·elasticsearch·搜索引擎
信号处理学渣1 小时前
matlab画图,选择性显示legend标签
开发语言·matlab
红龙创客1 小时前
某狐畅游24校招-C++开发岗笔试(单选题)
开发语言·c++
jasmine s1 小时前
Pandas
开发语言·python
biomooc2 小时前
R 语言 | 绘图的文字格式(绘制上标、下标、斜体、文字标注等)
开发语言·r语言
骇客野人2 小时前
【JAVA】JAVA接口公共返回体ResponseData封装
java·开发语言
black^sugar2 小时前
纯前端实现更新检测
开发语言·前端·javascript