Scala字符串常用函数

Scala字符串常用函数

  • 1. 子字符串-substring
  • 2. 字符串切分-split
  • 3. 去掉首尾空格-trim
  • 4. 与数值之间的转换
  • 完整代码
  • 参考链接

Scala中的字符串为String类型,其实就是Java中的java.lang.String。其常用函数如下:

1. 子字符串-substring

substring()方法返回字符串的子字符串。

substring()方法有以下两种形式:

  • substring(beginIndex: Int) beginIndex为开始索引,该形式得到从beginIndex开始,直到字符串末尾的子字符串。
  • substring(beginIndex: Int, endIndex: Int) beginIndex为开始索引,endIndex为结束索引,该形式得到从beginIndex开始(包含beginIndex)到endIndex(不包含endIndex)之间的子字符串。

以下来自菜鸟教程的图可以很好地说明:
子字符串-substring代码示例如下:

val str1 = "This is text"

println("返回值 :"+str1.substring(3))
println("返回值 :"+str1.substring(2, 7))
println("返回值 :"+str1.substring(2, str1.length))

运行结果:

返回值 :s is text
返回值 :is is
返回值 :is is text

注意 若endIndex超过字符串范围,会报String index out of range: 20错误。

2. 字符串切分-split

split() 方法根据匹配给定的正则表达式来拆分字符串,得到的结果为Array<String>

注意.$|* 等转义字符,必须得加 \\
注意:多个分隔符,可以用 | 作为连字符。

split() 方法有以下两种形式:

  • split(regex: String) regex为正则表达式分隔符。
  • split(regex: String, limit: Int) regex为正则表达式分隔符,limit为分割的份数,也就是说只对前limit个分隔符进行分割。
    示例代码如下:
val str2 = "Welcome-to-here"

println("- 分隔符返回值 :")
str2.split("-").foreach(println)

System.out.println("- 分隔符设置分割份数返回值 :")
str2.split("-", 2).foreach(println)

val str3 = "java.lang.String"
System.out.println("转义字符返回值 :")
str3.split("\\.", 3).foreach(println)

val str4 = "acount=? and uu =? or n=?"
println("多个分隔符返回值 :")
str4.split("and|or").foreach(println)

运行结果:

- 分隔符返回值 :
Welcome
to
here
- 分隔符设置分割份数返回值 :
Welcome
to-here
转义字符返回值 :
java
lang
String
多个分隔符返回值 :
acount=? 
 uu =? 
 n=?

3. 去掉首尾空格-trim

trim() 方法用于删除字符串的头尾空白符(含换行符),同时由于其无传入参数,括号可以省略。例如:

val str3 = "\n abc 12 \n "
println(str3.trim)
println("str3.trim length:"+str3.trim.length)
println(str3)
println("str3 length:"+str3.length)

运行结果:

abc 12
str3.trim length:6

 abc 12 
 
str3 length:11

4. 与数值之间的转换

字符串到数值的转换根据不同类型,可以通过以下方式进行:

  • Int - 整型 Integer.parseInt()
  • Long - 长整型 java.lang.Long.parseLong()
  • Float - 浮点型 java.lang.Float.parseFloat()
  • Double - 双精度浮点型 java.lang.Double.parseDouble()

示例代码如下:

val str_int: String = "23"
val str_float: String = "233.3"

val my_int: Int = Integer.parseInt(str_int)
val my_long: Long = java.lang.Long.parseLong(str_int)
val my_float: Float = java.lang.Float.parseFloat(str_float)
val my_double: Double = java.lang.Double.parseDouble(str_float)

println(my_int)
println(my_long)
println(my_float)
println(my_double)

运行结果:

23
23
233.3
233.3

注意 如果字符串格式不正确,则会抛出java.lang.NumberFormatException异常,可以考虑用try/catch来应对:

var odd_value: Long = 0L
try {
  odd_value = java.lang.Long.parseLong(str_float)
} catch {
  case e: NumberFormatException => {
    e.printStackTrace()
    println("Wrong format")
  }
}

完整代码

StringTest.scala

package com.xxx

object StringTest {
  def main(args: Array[String]): Unit = {
    val str1 = "This is text"

    println("返回值 :"+str1.substring(3))
    println("返回值 :"+str1.substring(2, 7))
    println("返回值 :"+str1.substring(2, str1.length))

    val str2 = "Welcome-to-here"

    println("- 分隔符返回值 :")
    str2.split("-").foreach(println)

    System.out.println("- 分隔符设置分割份数返回值 :")
    str2.split("-", 2).foreach(println)

    val str3 = "java.lang.String"
    System.out.println("转义字符返回值 :")
    str3.split("\\.", 3).foreach(println)

    val str4 = "acount=? and uu =? or n=?"
    println("多个分隔符返回值 :")
    str4.split("and|or").foreach(println)

    val str5 = "\n abc 12 \n "
    println(str5.trim)
    println("str5.trim length:"+str5.trim.length)
    println(str5)
    println("str5 length:"+str5.length)

    val str_int: String = "23"
    val str_float: String = "233.3"

    val my_int: Int = Integer.parseInt(str_int)
    val my_long: Long = java.lang.Long.parseLong(str_int)
    val my_float: Float = java.lang.Float.parseFloat(str_float)
    val my_double: Double = java.lang.Double.parseDouble(str_float)

    println(my_int)
    println(my_long)
    println(my_float)
    println(my_double)

    var odd_value: Long = 0L
    try {
      odd_value = java.lang.Long.parseLong(str_float)
    } catch {
      case e: NumberFormatException => {
        e.printStackTrace()
        println("Wrong format")
      }
    }
  }
}

参考链接

  1. Java substring() 方法 | 菜鸟教程

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

4月份公司测试部门来了个卷王之王,让人奔溃...

前段时间公司新来了个同事&#xff0c;听说大学是学的广告专业&#xff0c;因为喜欢IT行业就找了个培训班&#xff0c;后来在一家小公司干了三年&#xff0c;现在跳槽来我们公司。来了之后把现有项目的性能优化了一遍&#xff0c;服务器缩减一半&#xff0c;性能反而提升4倍&am…

C. Classy Numbers(dfs构造 + 组合数学)

Problem - C - Codeforces 让我们称某个正整数为“优美的”&#xff0c;如果它的十进制表示中不超过3个数字不为零。例如&#xff0c;数字4、200000、10203是优美的&#xff0c;而数字4231、102306、7277420000则不是。 给定一个区间[L;R]&#xff0c;请计算在此区间内有多少个…

Camtasia2023.0.1CS电脑录制屏幕动作工具新功能介绍

Camtasia Studio是一款专门录制屏幕动作的工具&#xff0c;它能在任何颜色模式下轻松地记录 屏幕动作&#xff0c;包括影像、音效、鼠标移动轨迹、解说声音等等&#xff0c;另外&#xff0c;它还具有即时播放和编 辑压缩的功能&#xff0c;可对视频片段进行剪接、添加转场效果。…

删除二叉搜索树中的节点

1题目 给定一个二叉搜索树的根节点 root 和一个值 key&#xff0c;删除二叉搜索树中的 key 对应的节点&#xff0c;并保证二叉搜索树的性质不变。返回二叉搜索树&#xff08;有可能被更新&#xff09;的根节点的引用。 一般来说&#xff0c;删除节点可分为两个步骤&#xff1a…

我的服务器被挖矿了,原因竟是。。。

「作者简介」&#xff1a;CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「推荐专栏」&#xff1a;对网络安全感兴趣的小伙伴可以关注专栏《网络安全入门到精通》 挖矿木马应急响应 一、什么是挖矿二、被挖矿主机现象三、挖矿木马处置思路1&#xff09;隔…

单链表你别再找我了,我怕双向链表误会

目录 带头双向循环链表的创建和初始化 创建一个新的结点&#xff08;方便复用&#xff09; 链表判空 链表打印 链表尾插 链表尾删 链表头插 链表头删 任意插入 任意删除 链表查找 链表销毁 完整代码 &#x1f60e;前言 之前我们讲了结构最简单&#xff0c;实现起来…

Spring —— Spring Boot 配置文件

JavaEE传送门 JavaEE Spring —— Bean 作用域和生命周期 Spring —— Spring Boot 创建和使用 目录 Spring Boot 配置文件Spring Boot 配置文件格式properties配置文件properties 基本语法properties 缺点 yml 配置文件yml 基本语法yml 配置不同类型数据及 nullyml 配置对象…

方案设计——食物测温仪方案

食物测温仪&#xff0c;在食物烹饪时&#xff0c;温度和时间至关重要&#xff0c;所以食物测温仪孕育而生&#xff0c;当用户使用时只需将食物测温仪的探头插入食物中&#xff0c;即刻能得到当前食物温度数据&#xff0c;不必用经验判断。做为一款食物测温仪&#xff0c;运用场…

Extra Finance 主网测试版上线,完成任务领空投

DeFi 的广泛应用将上一轮牛市推向顶峰&#xff0c;也让区块链具有了更多的拓展性。经过熊市的洗礼&#xff0c;DeFi 应用开始升级和优化&#xff0c;并且衍生出更多更加具有实用性和创新性的新产品。DeFi 已经成为区块链的基础设施&#xff0c;为更多的应用和创新提供帮助。下一…

“AI孙燕姿”们侵了谁的权?

“2003年大火的歌手&#xff1a;孙燕姿&#xff1b;2023年大火的歌手&#xff1a;AI孙燕姿”。在B站&#xff0c;这条评论获赞2800多&#xff0c;而被网友们集体点赞的是用AI克隆孙燕姿声音后演唱其他歌曲的视频。 截止目前&#xff0c;Up主们打造的“AI孙燕姿”已翻唱了百余首…

cam_lidar_calibration标定速腾激光雷达和单目相机外参

目录 一、资源链接二、代码测试2.1安装依赖2.2代码下载和修改2.2.1 optimiser.h文件2.2.2 feature_extractor.h文件 2.3编译代码2.4测试数据集2.4.1迭代计算2.4.2查看校准结果 三、标定自己激光雷达和相机3.1修改代码3.1.1camera_info.yaml配置文件3.1.2params.yaml配置文件3.1…

【Linux】Linux编辑神器vim的使用

目录 一、Vim的基本概念 二、Vim的基本操作 1、进入vim 2、正常模式切换至插入模式 3、插入模式切换至正常模式 4、正常模式切换至底行模式 5、退出Vim编辑器 三、Vim正常模式命令集 1、移动光标 2、删除文字 3、复制 4、替换 5、撤销 四、Vim底行模式命令集 1、列出行号 2、光…

Spring MVC:常用参数(注解)的使用和参数绑定的验证

Spring MVC&#xff1a;常用参数&#xff08;注解&#xff09;的使用和参数绑定的验证 一、学习资源二、基础源码三、实验结果3.1 Spring MVC常用参数Controller和RequestMappingRequestMappingRequestParamPathVariableCookie ValueRequestHeader 3.2 Spring MVC参数绑定3.2.1…

JavaScript实现贪吃蛇小游戏(网页单机版)

文章目录 项目地址项目介绍游戏开始游戏暂停游戏模式游戏死亡重新开始 结尾 今天使用 JavaScript 实现了一个网页版的贪吃蛇小游戏。 项目地址 Github: https://github.com/herenpeng/snakeGitee: https://gitee.com/herenpeng/snake线上体验&#xff1a;https://herenpeng.g…

在线未注册域名批量查询-域名注册批量查询

域名批量注册查询 域名批量注册查询是一种工具&#xff0c;可以帮助用户批量查询并注册多个域名。这种工具通常被域名管理者、品牌专家、互联网营销人员等使用。 以下是域名批量注册查询工具的优点&#xff1a; 提高效率&#xff1a;与手动单独注册域名相比&#xff0c;域名批…

计算机网络实验(ensp)-实验1:初识eNSP仿真软件

目录 实验报告&#xff1a; 实验操作 1.建立网络拓扑图并开启设备 2.配置路由器 1.输入命名&#xff1a;sys 从用户视图切换到系统视图 2.输入命名&#xff1a;sysname 姓名 修改路由器名字 3.输入命名&#xff1a;interface g0/0/0 进入端口视图g0…

如何学习web前端开发?这样学前端事半功倍,能救一个是一个!

非常理解想要自学前端的伙伴&#xff0c;因为好程序员的学员一开始也是自学插画的&#xff0c;很多同学&#xff0c;自学到最后真的非常枯燥乏味&#xff0c;且走了很多弯路。小源想着能帮一把是一把的原则&#xff0c;这两天整理了一份前端的高效学习路线&#xff0c;想学web前…

Redis 学习笔记

一、简介 1、纯内存操作&#xff08;理解成容量就是内容条&#xff09; 2、作为缓存使用&#xff08;因为内存条操作&#xff0c;比磁盘速度快&#xff09; 二、 常见命令 类型命令string set、get、mset、mget、setrange、getrange、 incr、decr、incrby、decrby、incrbyfl…

基于Python3的tkinter Text文本框加滚动条显示信息

用tkinter进行界面程序开发中&#xff0c;经常需要将信息展示到界面上&#xff0c;给用户及时的反馈和想要看到的结果。Text控件允许用户以不同的样式、属性来显示和编辑文本&#xff0c;它可以包含纯文本或者格式化文本&#xff0c;同时支持嵌入图片、显示超链接以及带有 CSS …

【纳什博弈、ADMM】基于纳什博弈和交替方向乘子法的多微网主体能源共享研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…