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.pswp.cn/web/63987.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/63987.shtml
英文地址,請注明出處:http://en.pswp.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時,可根據以下步驟開啟離線兼容模式,開啟此模式后,可在未登錄的狀態下,激活并使用…