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.rhkb.cn/news/494226.html

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

相关文章

贪心算法 part01

class Solution { public:int maxSubArray(vector<int>& nums) {int result INT32_MIN;int count 0;for (int i 0; i < nums.size(); i) {count nums[i];if (count > result) { // 取区间累计的最大值&#xff08;相当于不断确定最大子序终止位置&#xff…

Pytorch | 利用NI-FGSM针对CIFAR10上的ResNet分类器进行对抗攻击

Pytorch | 利用NI-FGSM针对CIFAR10上的ResNet分类器进行对抗攻击 CIFAR数据集NI-FGSM介绍背景算法流程 NI-FGSM代码实现NI-FGSM算法实现攻击效果 代码汇总nifgsm.pytrain.pyadvtest.py 之前已经针对CIFAR10训练了多种分类器&#xff1a; Pytorch | 从零构建AlexNet对CIFAR10进行…

SAP抓取外部https报错SSL handshake处理方法

一、问题描述 SAP执行报表抓取https第三方数据,数据获取失败。 报错消息: SSL handshake with XXX.COM:449 failed: SSSLERR_SSL_READ (-58)#SAPCRYPTO:SSL_read() failed##SapSSLSessionStartNB()==SSSLERR_SSL_READ# SSL:SSL_read() failed (536875120/0x20001070)# …

AI开发:使用支持向量机(SVM)进行文本情感分析训练 - Python

支持向量机是AI开发中最常见的一种算法。之前我们已经一起初步了解了它的概念和应用&#xff0c;今天我们用它来进行一次文本情感分析训练。 一、概念温习 支持向量机&#xff08;SVM&#xff09;是一种监督学习算法&#xff0c;广泛用于分类和回归问题。 它的核心思想是通过…

信奥赛四种算法描述

#include <iostream> #include <iomanip> using namespace std;// 使用unsigned long long类型来尽量容纳较大的结果&#xff0c;不过实际上这个数值极其巨大&#xff0c;可能最终仍会溢出 // 更好的方式可以考虑使用高精度计算库&#xff08;如GMP等&#xff09;来…

Ajax中的axios

既然提到Ajax&#xff0c;那就先来说一说什么是Ajax吧 关于Ajax Ajax的定义 Asynchronous JavaScript And XML&#xff1a;异步的JavaScript和XML。 反正就是一句话总结&#xff1a; 使用XML HttpRequest 对象与服务器进行通讯。 AJAX 是一种在无需重新加载整个网页的情况下&…

vscode 使用说明

文章目录 1、文档2、技巧显示与搜索宏定义和包含头文件 3、插件4、智能编写5、VSCode 与 C&#xff08;1&#xff09;安装&#xff08;2&#xff09;调试&#xff08;a&#xff09;使用 CMake 进行跨平台编译与调试&#xff08;b&#xff09;launch.json&#xff08;c&#xff…

多功能护照阅读器港澳通行证阅读机RS232串口主动输出协议,支持和单片机/Linux对接使用

此护照阅读器支持护照、电子芯片护照、港澳通行证、台湾通行证&#xff0c;和串口的被动的方式不一样。此护照阅读器通电后&#xff0c;自动读卡&#xff0c;串口输出&#xff0c;软件只需要去串口监听数据即可&#xff0c;例如用串口助手就可以收到读卡信息。 非常适用于单片…

petalinux-adi ---移植adi内核(一)

1. 设备树生成 将 前 面 生 成 的 设 备 树 文 件 ( 笔 者 这 里 生 成 的 设 备 树 文 件 在Petalinux 工 程 的components/plnx_workspace/device-tree/device-tree/ 目 录 下 ) pcw.dtsi 、 pl.dtsi 、system-top.dts 以 及 zynq-7000.dtsi 四 个 文 件 直 接 拷 贝 到 内 …

基于MindSpore NLP的PEFT微调

创建notebook 登录控制台 创建notebook 如果出现提示按如下操作 回到列表页面创建notebook参数如下&#xff1a; 配置mindnlp环境 打开GitHub - mindspore-lab/mindnlp: Easy-to-use and high-performance NLP and LLM framework based on MindSpore, compatible with model…

centos-stream9系统安装docker

如果之前安装过docker需要删除之前的。 sudo dnf -y remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine 安装yum-utils工具&#xff1a; dnf -y install yum-utils dnf-plugin…

Redis存在安全漏洞

Redis是美国Redis公司的一套开源的使用ANSI C编写、支持网络、可基于内存亦可持久化的日志型、键值&#xff08;Key-Value&#xff09;存储数据库&#xff0c;并提供多种语言的API。 Redis存在安全漏洞。攻击者利用该漏洞使用特制的Lua脚本触发堆栈缓冲区溢出漏洞&#xff0c;从…

黑马Java面试教程_P8_并发编程

系列博客目录 文章目录 系列博客目录前言1.线程的基础知识1.1 线程和进程的区别&#xff1f;难2频3面试文稿 1.2 并行和并发有什么区别&#xff1f; 难1频1面试文稿 1.3 创建线程的四种方式 难2频4面试文稿 1.4 runnable 和 callable 有什么区别 难2频3面试文稿 1.5 线程的 run…

ubuntu22.04 nginx配置下载目录,亲测成功

安装nginx ubuntu最简单&#xff0c;apt安装即可 apt install nginx 配置文件 文件都在目录下 /etc/nginx/添加内容 修改/ etc/nginx/sites-available/default &#xff0c; 注意这里不是nginx.conf&#xff0c;直接修改nginx.conf不奏效 location /downloads { …

【从零开始入门unity游戏开发之——C#篇21】C#面向对象的封装——`this`扩展方法、运算符重载、内部类、`partial` 定义分部类

文章目录 一、this扩展方法1、扩展方法的基本语法2、使用扩展方法3、扩展方法的注意事项5、扩展方法的限制6、总结 二、运算符重载1、C# 运算符重载2、运算符重载的基本语法3. 示例&#xff1a;重载加法运算符 ()4、使用重载的运算符5、支持重载的运算符6、不能重载的运算符7、…

android EditText密码自动填充适配

android上的密码&#xff08;其实不仅仅是密码&#xff0c;可以是用户名也可以是邮箱&#xff09;自动填充&#xff0c;是需要考虑适配的。 官方文档&#xff1a;https://developer.android.com/identity/autofill/autofill-optimize?hlzh-cn 什么是自动填充 手机厂商一般会…

stm32制作CAN适配器5--WinUsb上位机编写

上次我们要stm32制作了一个基于winusb有canfd适配器&#xff0c;今天我们来制作一个上位机程序来进行报文收发。 上位机还是用以前写好的&#xff0c;只是更改下dll文件。 项目链接器&#xff0c;输入&#xff0c;附加依赖项中增加winusb.lib winusb初始化&#xff1a;#incl…

数据库管理系统——数据库设计

摘要&#xff1a;本博客讲解了数据库管理系统中的数据库设计相关内容&#xff0c;包括概念结构设计&#xff1a;E-R模型&#xff0c;逻辑结构设计&#xff1a;E-R模型到关系设计等内容。 目录 一、数据库设计和数据模型 1.1.数据库设计概述 1. 2.数据库结构概述 1.3.数据库…

Pytorch | 从零构建AlexNet对CIFAR10进行分类

Pytorch | 从零构建AlexNet对CIFAR10进行分类 CIFAR10数据集AlexNet网络结构技术创新点性能表现影响和意义 AlexNet结构代码详解结构代码代码详解特征提取层 self.features分类部分self.classifier前向传播forward 训练过程和测试结果代码汇总alexnet.pytrain.pytest.py CIFAR1…

C++ 杨辉三角 - 力扣(LeetCode)

点击链接即可产看题目&#xff1a;118. 杨辉三角 - 力扣&#xff08;LeetCode&#xff09; 一、题目 给定一个非负整数 numRows&#xff0c;生成「杨辉三角」的前 numRows 行。 在「杨辉三角」中&#xff0c;每个数是它左上方和右上方的数的和。 示例 1: 输入: numRows 5 输出…