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

news2024/11/18 12:24:55

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.如果要插入的是复杂的表达式,使用 {} 是必须的。

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
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.coloradmin.cn/o/2242805.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

软考教材重点内容 信息安全工程师 第 4 章 网络安全体系与网络安全模型

4,1 网络安全体系的主要特征: (1)整体性。网络安全体系从全局、长远的角度实现安全保障,网络安全单元按照一定的规则,相互依赖、相互约束、相互作用而形成人机物一体化的网络安全保护方式。 (2)协同性。网络安全体系依赖于多种安全机制,通过各…

【数据库】如何保证数据库迁移过程中数据的一致性?

在数据库迁移过程中,保证数据的一致性是非常重要的,尤其是在涉及到多个表、多个数据库或分布式系统的情况下。以下是一些确保数据一致性的最佳实践和方法: 1. 备份数据 在开始迁移之前,进行全面的数据备份是确保数据一致性的第…

github 模型下载方法

github 模型权重,如果是项目下载,pth文件有时下载后只有1kb 本人测试ok下载方法: 点击view raw,然后可以下载模型权重文件了。

spring-data-elasticsearch 3.2.4 实现桶bucket排序去重,实现指定字段的聚合搜索

一、背景 es索引有一个文档CourseIndex,下面是示意: creatorIdgradesubjectnameno1002270英语听力课程一N00232DS91004380数学口算课程N00209DK71003480物理竞赛课程N00642XS21002280英语听力课程二N00432WS31002290英语听力课程三N002312DP5 在搜索的时候&#…

QQ 小程序已发布,但无法被搜索的解决方案

前言 我的 QQ 小程序在 2024 年 8 月就已经审核通过,上架后却一直无法被搜索到。打开后,再在 QQ 上下拉查看 “最近使用”,发现他出现一下又马上消失。 上线是按正常流程走的,开发、备案、审核,没有任何违规&#xf…

快速搭建Android开发环境:Docker部署docker-android并实现远程连接

目录 前言 1. 虚拟化环境检查 2. Android 模拟器部署 3. Ubuntu安装Cpolar 4. 配置公网地址 5. 远程访问 小结 6. 固定Cpolar公网地址 7. 固定地址访问 作者简介: 懒大王敲代码,计算机专业应届生 今天给大家聊聊快速搭建Android开发环境&#x…

大麦抢票科技

仅供学习参考,切勿再令您所爱的人耗费高昂的价格去购置黄牛票 ⚠️核心内容参考: 据悉,于购票环节,大麦凭借恶意流量清洗技术,于网络层实时甄别并阻拦凭借自动化手段发起下单请求的流量,强化对刷票脚本、刷票软件以及…

【STM32】基于SPI协议读写SD,详解!

文章目录 0 前言1 SD卡的种类和简介1.1 SD卡的种类1.2 SD卡的整体结构1.3 SD卡运行机制——指令和响应2 SD卡的通信总线2.1 SDIO2.2 SPI3 硬件连接4 代码实践【重点】4.1 HAL库移植4.2 标准库移植4.3 遇到的问题和解决方案5 扩展阅读0 前言 因为项目需要,使用stm32读写sd卡,这…

kafka管理工具

文章目录 前言一、Kafka Assistan1.1 描述1.2、配置安装 二、Conduktor2.1、描述2.2、配置安装 三、kafka-maneger3.1、描述3.2、配置安装3.3、命令启动3.4、[refer to](https://www.ctyun.cn/document/10000120/10033218#section-39755766f4910e4b) 前言 提示:这里…

leetcode_二叉树最大深度

对二叉树的理解 对递归调用的理解 对内存分配的理解 基础数据结构(C版本) - 飞书云文档 每次函数的调用 都会进行一次新的栈内存分配 所以lmax和rmax的值不会混在一起 /*** Definition for a binary tree node.* struct TreeNode {* int val;* …

使用 Axios 拦截器优化 HTTP 请求与响应的实践

目录 前言1. Axios 简介与拦截器概念1.1 Axios 的特点1.2 什么是拦截器 2. 请求拦截器的应用与实践2.1 请求拦截器的作用2.2 请求拦截器实现 3. 响应拦截器的应用与实践3.1 响应拦截器的作用3.2 响应拦截器实现 4. 综合实例:一个完整的 Axios 配置5. 使用拦截器的好…

高亚科技签约美妥维志化工,提升业务协同与项目运营效率

近日,中国企业管理软件资深服务商高亚科技与韶关美妥维志化工有限公司(以下简称“美妥维志”)正式签约。基于高亚科技的8Manage PM项目管理软件,美妥维志将实现项目进度、人员审批及问题的统一管理,提升部门间协同效率…

使用真实 Elasticsearch 进行更快的集成测试

作者:来自 Elastic Piotr Przybyl 了解如何使用各种数据初始化和性能改进技术加快 Elasticsearch 的自动化集成测试速度。 在本系列的第 1 部分中,我们探讨了如何编写集成测试,让我们能够在真实的 Elasticsearch 环境中测试软件,并…

数据分布之指数分布(sample database classicmodels _No.10)

数据分布之指数分布(sample database classicmodels _No.10) 准备工作,可以去下载 classicmodels 数据库具体如下 点击:classicmodels 也可以去 下面我的博客资源下载 https://download.csdn.net/download/tomxjc/88685970 文章…

RPC-健康检测机制

什么是健康检测? 在真实环境中服务提供方是以一个集群的方式提供服务,这对于服务调用方来说,就是一个接口会有多个服务提供方同时提供服务,调用方在每次发起请求的时候都可以拿到一个可用的连接。 健康检测,能帮助从连…

Flink_DataStreamAPI_执行环境

DataStreamAPI_执行环境 1创建执行环境1.1getExecutionEnvironment1.2createLocalEnvironment1.3createRemoteEnvironment 2执行模式(Execution Mode)3触发程序执行 Flink程序可以在各种上下文环境中运行:我们可以在本地JVM中执行程序&#x…

Cyberchef配合Wireshark提取并解析HTTP/TLS流量数据包中的文件

本文将介绍一种手动的轻量级的方式,还原HTTP/TLS协议中传输的文件,为流量数据包中的文件分析提供帮助。 如果捕获的数据包中存在非文本类文件,例如png,jpg等图片文件,或者word,Excel等office文件异或是其他类型的二进…

Golang云原生项目:—实现ping操作

熟悉报文结构 ICMP校验和算法: 报文内容,相邻两个字节拼接到一起组成一个16bit数,将这些数累加求和若长度为奇数,则将剩余一个字节,也累加求和得出总和之后,将和值的高16位与低16位不断求和,直…

基于STM32 HAL库的FFT计算与数学运算:幅值、频率、均方根、平均值、最大值、最小值、峰峰值与标准差

一、用STM32进行FFT计算与数学运算的过程 1. 信号采集 首先,我们需要使用STM32的ADC模块来采集模拟信号,比如三相交流电。ADC将模拟信号(如电压或电流)转换为数字信号,供后续处理。 采样数量:FFT的计算通…

关于Github报错Verify your two-factor authentication (2FA) settings的解决方案

如果我们在使用GitHub出现2FA验证问题:Verify your two-factor authentication (2FA) settings,那么可以参考下面的解决方法解决问题。 当然,如果有国外的手机号直接使用验证码接收就可以,问题是不支持中国手机啊。那么怎么办呢&…