scala基础学习(数据类型)-字符串

文章目录

  • scala中的字符串
    • 引号
      • 单引号
      • 双引号
      • 三引号
    • 常用内置函数
      • length 获取字符串长度
      • charAt 字符串元素访问
      • substring 获取字串
      • indexOf 获取字串位置
      • replace 字符串替换
      • toLowerCase,toUpperCase 字符串大小写转换
      • trim 去除首位空白符
      • split 字符串切割以及查看
      • startsWith,endsWith 判断开始结束,只接受字符串
      • contains 是否包含,字符串,字符都可以接受
      • format 格式化
      • 字符串穿插 s,f
      • 字符串转意 \,raw
      • 字符串拼接,重复,比较
    • 注意事项

scala中的字符串

引号

单引号

单引号创建字符
val str1 = 'A'

双引号

如果使用单引号创建字符串则报错

创建字符串,字符串是不可变对象
val str2 = "abcdefg"

三引号

创建多行字符串,三引号 |边界符号,文本都以边界符启始,stripMargin去除边界符前面的空格到遇到竖线为止
val rawStr ="""|ldsx|ldsx2|ldsx3|{"ldsx":"dsts"}|""".stripMargin

常用内置函数

var test_str: String = " This is a test string "

length 获取字符串长度

val test_str_len = test_str.length

charAt 字符串元素访问

字符串访问str.charAt(index) 无法反方向获取索引,索引不能超过字符串长度否则报错

val test_char = test_str.charAt(3)

substring 获取字串

获取子字符串,str.substring(s,e),索引不能超过限制否则报错,不设置end默认取到最后,

val substr = test_str.substring(1)

indexOf 获取字串位置

查找,子字符串第一次出现在索引的位置,元素不存在返回-1

val get_index = test_str.indexOf("This")
val get_index2 = test_str.indexOf("h")

replace 字符串替换

替换 字符串中所有字符全部替换,注意单字符使用’',字符串使用"",元素不存在则无变动

val replace_str = test_str.replace('T','V')
val replace_str = test_str.replace("HELLO","HI")

toLowerCase,toUpperCase 字符串大小写转换

val lowerstr = test_str.toLowerCase
val upperstr = test_str.toUpperCase

trim 去除首位空白符

val trimstr = test_str.trim

split 字符串切割以及查看

切割后print打印出的是数组内存地址,如果想要查看内容需要配合使用mkstring,map,toseq,deep

val splitstr = test_str.split(" ")//拼接打印
println(splitstr,splitstr.mkString("[", ", ", "]"))
//([Ljava.lang.String;@6aaa5eb0,[, This, is, a, test, string])println(splitstr,splitstr.toSeq)
//([Ljava.lang.String;@6aaa5eb0,WrappedArray(, This, is, a, test, string))//for循环展示
splitstr.foreach(println)
//This
//is
//a
//..
.//可以查看多维数组结构
println(splitstr,splitstr.deep)
//([Ljava.lang.String;@6aaa5eb0,Array(, This, is, a, test, string))val arr:Array[Any] = Array(Array(1, 2), Array(3, 4))
println(arr.deep)
//Array(Array(1, 2), Array(3, 4))
println(arr.toSeq)
//WrappedArray([I@246ae04d, [I@62043840)

startsWith,endsWith 判断开始结束,只接受字符串

即便是单字符也需要使用双引号表示字符串否则报错,返回bool值

val start_str = test_str.startsWith("T")
println(start_str)
val end_str = test_str.endsWith("ok")
println(end_str)

contains 是否包含,字符串,字符都可以接受

返回bool值

//包含contains
val contains_str = test_str.contains("This")
println(contains_str)

format 格式化

%s占位符号,S,s会影响传入数据的大小写

// %S 全部变大写  %s保持原结构
val format_str2 =  String.format("HELLO,%S","Scala")
println(format_str2)//多参数传递,直接加参就好了
val format_str3 =  String.format("HELLO,%S,%s","Scala","LDSX")
println(format_str3)
//HELLO,SCALA,LDSX

字符串穿插 s,f

//Scala 提供了字符串插值功能,其中 s,f 字符串插值允许你在字符串中嵌入变量或表达式。
val test_str:String = "hello"
// s,f效果相同
val format_str = s"format info: $test_str"
val format_str2 = f"format info: $test_str"
println(format_str)
//format info: hello

字符串转意 ,raw

\n,\t,换行,tab 使用 \ 禁止转义

//字符串转义
val escapedstr = "Hello,\n \\n是换行"//直接使用raw 无视转义
val escapedstr2 = raw"hello,\n"

字符串拼接,重复,比较

两个字符串之间支持使用 +concat拼接,一个字符串也支持与int进行计算,字符串之间可以比较

val test_str2: String = "test info"
println(test_str2 + " info")
//test info infoval str1 = "Hello, "
val str2 = "Scala!"
val result = str1.concat(str2)
println(result)  
// 输出: Hello, Scala!println(test_str2*2)
//test infotest println(test_str2 == test_str2)
//true

隐式转换:在 Scala 中,你可以直接将整数(Int)与字符串进行拼接,Scala 会自动将整数转换为字符串。这是因为 Scala 的 Any 类型的 toString 方法被重载,可以处理数值类型。

var a = 10
var b = 20
println("a + b = " + (a + b))  // 输出: a + b = 30

由于 + 操作符的左侧是一个字符串,Scala 会自动调用 30toString 方法,将其转换为字符串 "30",然后与左侧的字符串进行拼接,得到 "a + b = 30"

注意事项

字符 与 字符串的定义方式 分别为单引’',双引""

startsWith,endsWith 只接受字符串

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/63987.shtml

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

相关文章

数据库安全-redisCouchdb

1.redis未授权访问 默认端口:6379 1.1 Redis沙盒逃逸漏洞RCE-CVE-2022-0543 介绍:Redis 是一套开源的使用 ANSI C编写、支持网络、可基于内存亦可持久化的日志型、键值存储数据库,并提供多种语言的API。Redis 如果在没有开启认证的情况下,…

springboot集成websokcet+uniapp开发聊天原型验证(一)

1. 整体思路 群组聊天功能实现思路 需要为每个群组维护一个对应的集合(可以是 Set 等数据结构),用来存放该群组内所有在线用户的 WebSocketSession。当有消息发送到群组时,遍历该群组对应的集合,向其中的每个在线用户…

Reed-Muller(RM)码之编码

点个关注吧! 看了一些中文的博客,RM码没有很详细的资料,所以本文尝试给出推导原理。 推导 RM码由 ( r , m ) ( r , m ) (r,m

List直接使用removeAll报错

List直接使用removeAll报错 需要先将list转换才能使用 原因是: removeAll 方法在 Java 中用于从当前列表中删除另一个列表中存在的所有元素。如果直接对 List 接口的一个实现使用 removeAll 方法抛出异常,可能的原因有: 不同的List实现&am…

Linux -- 线程的优点、pthread 线程库

目录 线程的优点 pthread 线程库 前言 认识线程库 简单验证线程的独立栈空间 线程的优点 与进程之间的切换相比,线程之间的切换需要操作系统做的工作要少得多。 调度进程时,CPU 中有一个 cache(缓存,提高运行效率&#xff0…

【magic-dash】01:magic-dash创建单页面应用及二次开发

文章目录 一、magic-dash是什么1.1 安装1.2 使用1.2.1 查看内置项目模板1.2.2 生成指定项目模板1.2.3 查看当前magic-dash版本1.2.4 查看命令说明1.2.5 内置模板列表二、创建虚拟环境并安装magic-dash三、magic-dash单页工具应用开发3.1 创建单页面项目3.1.1 使用命令行创建单页…

从零开始使用MaxKB打造本地大语言模型智能问答系统与远程交互

文章目录 前言1. 下载运行Ollama2. 安装大语言模型3. 安装Cpolar工具4. 配置公网地址5. 固定公网地址6. MaxKB 添加Olama7.创建问答应用 前言 目前大语言模型(LLM)已经成为了人工智能领域的一颗璀璨明星,从自然语言处理到智能问答系统&#…

深度解析 Pytest 中的 conftest.py

关注开源优测不迷路 大数据测试过程、策略及挑战 测试框架原理,构建成功的基石 在自动化测试工作之前,你应该知道的10条建议 在自动化测试中,重要的不是工具 在使用 Pytest 进行测试的过程中,conftest.py 文件扮演着极为重要的角色…

【python】银行客户流失预测预处理部分,独热编码·标签编码·数据离散化处理·数据筛选·数据分割

数据预处理 通过网盘分享的文件:银行流失预测数据和代码 链接: https://pan.baidu.com/s/1loiB8rMvZArfjJccu4KW6w?pwdpfcs 提取码: pfcs 非数值特征处理 目的:将非数值特征转换为数值型,以便模型能够处理。方法: 地理位置&am…

回归预测 | MATLAB实现CNN-LSSVM卷积神经网络结合最小二乘支持向量机多输入单输出回归预测

回归预测 | MATLAB实现CNN-LSSVM卷积神经网络结合最小二乘支持向量机多输入单输出回归预测 目录 回归预测 | MATLAB实现CNN-LSSVM卷积神经网络结合最小二乘支持向量机多输入单输出回归预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 回归预测 | MATLAB实现CNN-LSSVM…

slam学习笔记7---状态量求导相关数学公式

前言:本来打算只是归纳一下数学求导相关公式,后面也写了旋转求导相关内容,哈哈。感觉有点发散把握不住呀。水平有限,欢迎评论区点出。 一、基本初等函数求导公式 ( C ) ′ 0 , C (C)0,C (C)′0,C为常数 ( x μ ) ′ μ x μ −…

32单片机串口数据接收、空闲IDLE中断详解

一、前提说明 一开始写单片机程序的时候不太清楚空闲中断这个东西,每次用串口接收数据,都要再开一个定时器,在定时器内进行倒计时,每次接收数据就重置计时时间,计时结束就触发中断,再判断所有接收的数据&am…

深入探讨 Go 中的高级表单验证与翻译:Gin 与 Validator 的实践之道20241223

深入探讨 Go 中的高级表单验证与翻译:Gin 与 Validator 的实践之道 在现代后端开发中,表单验证是保证数据完整性和服务稳定性的核心环节。如何优雅、高效地实现表单验证,同时提供人性化的错误提示,是每位开发者的必修课。在本文中…

掌握 Ansys ACP 中的参考方向:简化复杂的复合材料设计

概括 在复合材料分析领域,精度至关重要,尤其是在定义纤维方向和铺层时。Ansys ACP(Ansys Composite PrepPost)提供了强大的工具来建立参考方向,这是实现精确结构模拟的关键步骤。在本博客中,我们将揭开在 …

Vue2学习(一)——Vue简介、Vue指令与指令修饰符

一、Vue简介 Vue是一套用于构建用户界面的渐进式框架。 所谓渐进式就是循序渐进,不一定非得把Vue中的所有API都学完才能开发Vue,可以学一点开发一点。 Vue2官网地址:https://v2.cn.vuejs.org/ Vue3官网地址:https://cn.vuejs…

Redis--通用命令学习

目录 一、引言 二、基础命令 1.set 2.get 3.keys 3.1 keys ? 3.2 keys * 3.3 keys [abe] 3.4 keys [^] 3.5 keys [a-b] 4.exists 5.delete 6.expire 7.ttl 8.type 三、Redis中的过期策略(面试题) 1.惰性删除 2.定期删除 …

Linux程序设计(第四版)| 学习笔记

上次学习Linux相关内容还是上学的时候为了应付考试,最近有项目涉及Linux,重新学习以下。 很多年前关于Linux的总结 一、入门 1.概念 (1) UNIX 1)定义:指的是一种遵循特定规范的计算机操作系统。 2)特点:简单性、集中性、可重用…

PostgreSQL 的历史

title: PostgreSQL 的历史 date: 2024/12/23 updated: 2024/12/23 author: cmdragon excerpt: PostgreSQL 是一款功能强大且广泛使用的开源关系型数据库管理系统。其历史可以追溯到1986年,当时由加州大学伯克利分校的一个研究团队开发。文章将深入探讨 PostgreSQL 的起源、…

Ubuntu22.04 LTS 安装nvidia显卡驱动

准备跑老师给定的Github上的多模态源码,但是用了这么久ubuntu还没有尝试过安装nvidia驱动,好在也是一次成功,于是记录下来。 借鉴的是Ubuntu22.04安装显卡驱动(高速、避错版)-CSDN博客这篇文章,按照流程来基本没有问题,不过个人觉得有些步骤比较冗余,所以记录下来 主要…

WPS工具栏灰色怎么办

WPS离线不登录,开启工具栏等相关功能 当你在使用WPS的过程中,若因网络问题或其他特殊原因,导致无法登录使用WPS时,可根据以下步骤开启离线兼容模式,开启此模式后,可在未登录的状态下,激活并使用…