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),直接将字符串中的转义符输出为文字。



不处理转义字符:


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

相关推荐
Root_Smile2 分钟前
【C++】构造函数
开发语言·c++
天润融通14 分钟前
如何构建高效的知识库系统?实现智能信息管理
大数据·人工智能·产品运营·知识图谱·用户运营
源代码杀手17 分钟前
【Rust 编程语言工具】rustup-init.exe 安装与使用指南
开发语言·后端·rust
2401_8830410826 分钟前
什么是全域电商?有哪些电商代运营公司能做全域电商代运营?
大数据·人工智能·产品运营
飞天大拖把30 分钟前
ElasticSearch
大数据·elasticsearch·搜索引擎
double丶flower30 分钟前
HashMap与HashTable的区别以及HashMap的底层原理
java·开发语言
最后一个bug38 分钟前
lua调用C语言函数,在函数中进行类型检查
linux·c语言·开发语言·lua
未知陨落1 小时前
数据结构——AVL树
开发语言·数据结构·c++·avl树
军训猫猫头1 小时前
37.超级简易的计算器 C语言
c语言·开发语言
焦思懿--19期--工职大1 小时前
JavaScript总结
开发语言·javascript·ecmascript