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。当有消息发送到群组时,遍历该群组对应的集合,向其中的每个在线用户…

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)已经成为了人工智能领域的一颗璀璨明星,从自然语言处理到智能问答系统&#…

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

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

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

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

深入探讨 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.定期删除 …

PostgreSQL 的历史

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

WPS工具栏灰色怎么办

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

国标GB28181-2022平台EasyGBS:安防监控中P2P的穿透方法

在安防监控领域,P2P技术因其去中心化的特性而受到关注,尤其是在远程视频监控和数据传输方面。P2P技术允许设备之间直接通信,无需通过中央服务器,这在提高效率和降低成本方面具有明显优势。然而,P2P技术在实际应用中也面…

com.google.common.collect.ImmutableList$SerializedForm

今天AndroidStudio安装了个2021版本的,gradle用了7.3.3,创建项目后控制台总是有这样一个错误: Unable to load class com.google.common.collect.ImmutableList$SerializedForm. This is an unexpected error. Please file a bug containing…

Docker部署Sentinel

一、简介 是什么:面向分布式、多语言异构化服务架构的流量治理组件 能干嘛:从流量路由、流量控制、流量整形、熔断降级、系统自适应过载保护、热点流量防护等多个维度来帮助开发者保障微服务的稳定性 官网地址:https://sentinelguard.io/zh-c…

HTMLCSSJavaScriptDOM 之间的关系?

一、HTML 中文名:超文本标记语言 英文名:HyperText Markup Language HTML是一种用来结构化Web网页及其内容的标记语言。 HTML 由一系列的元素组成,这些元素可以用来包围不同部分的内容,使其以某种方式呈现或者工作。 图Ⅰ 每…

Hadoop集群(HDFS集群、YARN集群、MapReduce​计算框架)

一、 简介 Hadoop主要在分布式环境下集群机器,获取海量数据的处理能力,实现分布式集群下的大数据存储和计算。 其中三大核心组件: HDFS存储分布式文件存储、YARN分布式资源管理、MapReduce分布式计算。 二、工作原理 2.1 HDFS集群 Web访问地址&…

施耐德变频器ATV320系列技术优势:创新与安全并重

在工业自动化领域,追求高效、安全与智能已成为不可阻挡的趋势。施耐德变频器ATV320系列凭借其强大的设计标准和全球认证,成为能够帮助企业降低安装成本,提高设备性能的创新解决方案。 【全球认证,品质保障】ATV320 系列秉持施耐德…

Linux挖矿程序排查

一、背景 我们收到一个阿里云安全告警,内容是服务器可能存在挖矿程序。 二、杀死挖矿程序 2.1 找到可疑服务器进程 #1.输入top命令,输入shift P会按照cpu的使用率大小从大到小进行排序,cpu使用率高的就是可疑进程。 top #2.查看运行该进程…