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

news/2024/11/17 13:53:44/

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

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
不处理转义字符:
在这里插入图片描述


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


http://www.ppmy.cn/news/1547728.html

相关文章

【web前端笔记】vue3 + vite的前端项目中,使用import.meta.glob()方法实现全局注册组件的通用代码

目录 1.1、如何读取所有文件 1.2、通用代码 1.3、在main.js引入 这篇文章介绍一下,在vue3和vite搭建的项目中,如何将【src/components】目录下所有的【*.vue】文件,当做一个组件全局注册到Vue对象里面。 1.1、如何读取所有文件 在vue3和vite搭建的项目里面,它给我们提…

爬虫如何解决短效代理被封的问题?

在数据采集的征途上,短效代理如同一把双刃剑,它既能为我们带来速度和效率,也可能因为频繁更换IP地址而遭遇被封禁的风险。那么,作为数据采集er的我们,该如何巧妙应对,确保爬虫的稳定运行呢?今天…

MyBatis CRUD快速入门

3. CRUD操作 3.1. namespace 配置文件中namespace中的名称为对应Mapper接口或者Dao接口的完整包名 3.2. select select标签是mybatis中最常用的标签之一select语句有很多属性可以详细配置每一条SQL语句 id 命名空间中唯一的标识符接口中的方法名与映射文件中的SQL语句ID 一一…

方法论-WPS模型(高效沟通和决策分析的框架)

WPS模型(What, Problem, Solution)是一种高效沟通和决策分析的框架,旨在帮助沟通者清晰、简洁地表达问题和解决方案,特别适用于在复杂或多变的环境中进行清晰的交流。WPS模型的核心是通过以下三个步骤来组织沟通内容: …

SpringBootTest常见错误解决

1.启动类所在包错误 问题 由于启动类所在包与需要自动注入的类的包不在一个包下: 启动类所在包: com.exmaple.test_02 但是对于需要注入的类却不在com.exmaple.test_02下或者其子包下,就会导致启动类无法扫描到该类,从而无法对…

继承和多态(上)

目录 一.继承 1.何为继承 2.继承的语法 3.子类访问父类 (1)子类访问父类的成员变量 (2)子类访问的父类方法 二.super关键字 1.super用于调用父类的构造方法 2.super用于调用父类的实例方法 3.super用于访问父类的实例变量 三.子父类构造方法 和代码块的执行优先顺序…

SQLite 和 MySQL语法区别

SQLite 和 MySQL 在 SQL 语法上有一些差异,这些差异主要体现在数据类型、函数、表和索引的管理等方面。以下是一些主要的不同之处: 1. 数据类型 SQLite 支持的数据类型包括:TEXT, INTEGER, REAL, BLOB。动态类型系统,允许在插入…

跨域问题的产生和解决

1. 为什么会产生跨域 前后端分离模式下,客户端请求前端服务器获取视图资源,然后客户端自行向后端服务器获取数据资源,前端服务器的协议、IP和端口和后端服务器很可能是不一样的、这样就产生了跨域。 这主要是因为浏览器的同源策略导致的&…