当前位置: 首页 > news >正文

iOS开发Swift-字符串与字符

1.字符串的定义

let someString = "some string value"

2.多行字符串的定义(""")

let quotation = """
有一个人前来买瓜。
"这瓜甜吗?"他问。
"""

 前一个"""前和后一个"""后无换行

//前一个"""前和后一个"""后无换行
let someString = "有个人。"
let someString = """
有个人。
"""
//此两个语句效果相同

 想要实现在代码编写时换行而在实际运行后不换行:  \

//在代码编写时换行而在实际运行后不换行
let someString = """
abcdefg\
hijklmn
"""
//实际输出:abcdefghijklmn

3.字符串中的特殊字符

(1)转义字符

\0空字符
\\反斜线
\t水平制表符
\n换行符
\r回车符
\"双引号
\'单引号

要在"""中使用(""")时,必须至少写一个转义符\。例如 \""" 或 \"\"\"

(2)Unicode标量

\u{24}两位十六进制数
\u{2665}四位十六进制数
\u{nnn...}1~8位十六进制数

4.扩展字符分隔符

有\但不想转义时:

#"Line1 \nLine2"#

5.初始化空字符串

var emptyString = ""     //或
var emptyString = String()//判断字符串是否为空:
if emptyString.isEmpty {print("Empty!")
}

6.字符串可变性

var a = "a"
a += "b"   //a = "ab"
let c = "c"
c += "d"   //报错,常量字符串不可修改

7.使用字符

//通过for-in输出字符
for c in "Dog!"{print(c) } /* 输出:Dog! */
//通过指定类型创建字符
let end: Character = "!"
//通过定义字符数组创建字符数组,再通过String(字符数组)方法创建字符串
let cat: [Character] = ["c", "a", "t"] let catString = String(cat) print(cat) //输出cat

8.连接字符串和字符

//1
let a = "a"
let b = "b"
var c = a + b
//2
var a = "a"
a += b
//3
let a: Character = "a"
b.append(a)    //ba

9.字符串插值

let a = 3
let message = "\(a) times 2.5 is \(Double(a) * 2,5)"   //3 times 2.5 is 7.5

10.字符串索引

let greeting = "Guten Tag!"
greeting[greeting.startIndex]    //G
greeting[greeting.index( before: greeting.endIndex)]    //!
greeting[greeting.index( after: greeting.startIndex)]    //u
greeting[greeting.index( greeting.startIndex, offsetBy: 7)]    //a

startIndex为第一个字符;endIndex为最后一个字符后一个字符。

indices属性会创建一个包含全部索引范围访问单字符。

for index in getting.indices{print("\(greeting[index])", terminator:" ")
}    //G u t e n  T a g !

11.插入和删除

//插入
var h = "Hello" h.insert("!", at: h.endIndex) //Hello!
//删除
//remove
h.remove( at: h.index(before: h.endIndex) )    //Hello
//removeSubrange
let range = h.startIndex ..< h.endIndex
h.removeSubrange(range)   //参数为一个字符串范围
//运行结果:啥也没有

12.子字符串

let g = "Hello,World!"
let index = g.firstIndex(of: ",") ?? g.endIndex
let beginning = g[..<index]     //beginning为subString类型
let newString = String(beginning)   //将subString类型转换为String类型
//短时间使用此子字符串用subString,长期使用需转换为String类型
print(newString)    //Hello

13.比较字符串

 (1)字符串/字符相等

==     !=

标准相等:语言意义和外观都相等。

a == a自反性
a == b ⇒ b == a对称性
a == b && b == c ⇒ a == c传递性

(2)前缀/后缀相等

//都返回一个布尔值
scene.hasPrefix("Action 1")    //有相同前缀"Action 1"
scene.hasSuffix("。")     //有相同后缀"。"

14.utf8表示、utf16表示

dogString.utf8    //68 111 103 226
dogString.utf16    //68 111 103 8252

15.Unicode标量表示

Unicode:字符的唯一21位数表示

dogString.unicodeScalars     //D o g !

相关文章:

iOS开发Swift-字符串与字符

1.字符串的定义 let someString "some string value"2.多行字符串的定义(""") let quotation """ 有一个人前来买瓜。 "这瓜甜吗&#xff1f;"他问。 """前一个"""前和后一个""&…...

Linux Kernel:syscall之fork与exec

环境: Kernel Version:Linux-5.10 ARCH:ARM64 一:前言 上一节我们提到了进程的产生方式fork,exec与clone,本节将详细分析fork和exec族系统调用的具体实现。通常这些调用不是由应用程序直接发出的,而是通过一个中间层调用,即负责与内核通信的C标准库。从用户状态切换到…...

CentOS 修改MySQL密码

CentOS 修改MySQL密码 1.登录MySQL 2.执行如下命令 update user set passwordpassword(mivbAs7Awc) where userroot;报错如下&#xff1a; Unknown column ‘password’ in ‘field list’ 3.执行如下命令 update user set passwordpassword(mivbAs7Awc) where userroot碰到…...

Android通过setaffinity实现绑核

有时候为了降低App算力占用&#xff0c;会把关键的线程绑定到大核中&#xff0c;下面介绍一种绑核的方式 查看绑核 查看pid :/ # ps -A | grep test u0_a15 25178 405 15950272 176544 do_epoll_wait 0 S com.test.jnites查看线程号 top -H -p 25178 25224 u0_…...

stm32的位带操作

在51单片机中&#xff0c;我们可以使用P2^1来对单片机的某一位进行操作&#xff0c;到了stm32&#xff0c;我们通过位带操作&#xff0c;将寄存器的每一位映射到一个32位的地址。如下是我查资料摘录的一些图片。 映射方式 SRAM: AliasAddr 0x22000000 (A-0X20000000)*8*4n*4…...

Java 电子招标采购系统源码:营造全面规范安全的电子招投标环境,促进招投标市场健康可持续发展

营造全面规范安全的电子招投标环境&#xff0c;促进招投标市场健康可持续发展 传统采购模式面临的挑战 一、立项管理 1、招标立项申请 功能点&#xff1a;招标类项目立项申请入口&#xff0c;用户可以保存为草稿&#xff0c;提交。 2、非招标立项申请 功能点&#xff1a;非招标…...

https协议经过SpringMVC重定向之后变成http协议

之前项目的协议还是http&#xff0c;当改为https之后&#xff0c;就出现了这个问题。 服务访问地址&#xff1a;https://wuxinke.demo.com 访问某个页面的地址&#xff1a;https://wuxinke.demo.com/aps/judgeProviderOrCtenant.ht 经SpringMVC重定向之后&#xff0c;地址变…...

iOS 分别对一张图的局部进行磨砂,拼接起来不能贴合

效果图 需求&#xff0c;由于视图层级的原因&#xff0c;需要对图片分开进行磨砂&#xff0c; 然后组合在一起 如图&#xff0c;上下两部分&#xff0c;上下两个UIImageVIew大小相同&#xff0c;都是和图片同样的大小&#xff0c;只是上面的UIimageVIew 只展示上半部份 &#…...

与面试官互动:建立积极的技术讨论氛围

&#x1f337;&#x1f341; 博主猫头虎 带您 Go to New World.✨&#x1f341; &#x1f984; 博客首页——猫头虎的博客&#x1f390; &#x1f433;《面试题大全专栏》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33a; &a…...

计算机竞赛 基于YOLO实现的口罩佩戴检测 - python opemcv 深度学习

文章目录 0 前言1 课题介绍2 算法原理2.1 算法简介2.2 网络架构 3 关键代码4 数据集4.1 安装4.2 打开4.3 选择yolo标注格式4.4 打标签4.5 保存 5 训练6 实现效果6.1 pyqt实现简单GUI6.3 视频识别效果6.4 摄像头实时识别 7 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xf…...

完美解决Ubuntu网络故障,连接异常,IP地址一直显示127.0.0.1

终端输入ifconfig显示虚拟机IP地址为127.0.0.1&#xff0c;具体输出内容如下&#xff1a; wxyubuntu:~$ ifconfig lo: flags73<UP,LOOPBACK,RUNNING> mtu 65536inet 127.0.0.1 netmask 255.0.0.0inet6 ::1 prefixlen 128 scopeid 0x10<host>loop txqueuelen …...

手机无人直播软件有哪些,又有哪些优势?

如今&#xff0c;随着智能手机的普及和移动互联网的发展&#xff0c;手机无人直播成为了一个炙手可热的领域。手机无人直播软件为用户提供了便捷、灵活的直播方式&#xff0c;让更多商家人能够实现自己的直播带货的梦想。接下来&#xff0c;我们将探讨手机无人直播软件有哪些&a…...

解密算法与数据结构面试:程序员如何应对挑战

&#x1f337;&#x1f341; 博主猫头虎 带您 Go to New World.✨&#x1f341; &#x1f984; 博客首页——猫头虎的博客&#x1f390; &#x1f433;《面试题大全专栏》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33a; &a…...

分布式事务7种(秒懂-2PC、3PC、TCC、Saga、本地事务表、MQ事务消息、最大努力通)

参考文章&#xff1a; 七种常见分布式事务详解&#xff08;2PC、3PC、TCC、Saga、本地事务表、MQ事务消息、最大努力通知&#xff09;_张维鹏的博客-CSDN博客 分布式事务 &#xff08;秒懂&#xff09;_40岁资深老架构师尼恩的博客-CSDN博客 分布式事务&#xff1a;在分布式…...

基于Java+SpringBoot+Vue前后端分离美食推荐商城设计和实现

博主介绍&#xff1a;✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专…...

最新ChatGPT程序源码+AI系统+详细图文搭建教程/支持GPT4/AI绘画/H5端/完整Prompt知识库

一、AI系统 如何搭建部署人工智能源码、AI创作系统、ChatGPT系统呢&#xff1f;小编这里写一个详细图文教程吧&#xff01;SparkAi使用Nestjs和Vue3框架技术&#xff0c;持续集成AI能力到AIGC系统&#xff01; 1.1 程序核心功能 程序已支持ChatGPT3.5/GPT-4提问、AI绘画、Mi…...

本地启动若依微服务版本

前置工作&#xff1a; 1.导入sql文件 2.安装完nacos 3.安装完redis 启动步骤&#xff1a; 1.开启nacos&#xff0c;在bin目录下 startup.cmd -m standalone 注意&#xff1a;在这之前要配置nacos持久化&#xff0c;修改conf/application.properties文件&#xff0c;增加支持…...

HTML的span标签的作用是什么?答:对文本内容进行精细的样式化和标记。

当谈到HTML中的<span>标签时&#xff0c;它是一个非常基本且灵活的内联元素。它通常用于在文本中应用样式、添加额外的语义或将特定部分标记为一个单独的区域。<span>标签本身并不会给其中的内容带来任何视觉上的变化&#xff0c;但它可以与CSS一起使用&#xff0c…...

基于微服务、Java、Springcloud、Vue、MySQL开发的智慧工地管理系统源码

智慧工地聚焦施工现场岗位一线&#xff0c;围绕“人、机、料、法、环”五大要素&#xff0c;数字化工地平台与现场多个子系统的互联实现了工地业务间的互联互通和协同共享。数字化工地管理平台能够盘活工地各大项目之间孤立的信息系统&#xff0c;实现数据的统一接入、处理与维…...

Redis内存策略

文章目录 Redis内存策略过期策略DB结构惰性删除周期删除 淘汰策略 Redis内存策略 Redis是基于内存存储&#xff0c;所以其性能很强。但单节点的Redis内存不宜过大&#xff0c;否则会影响持久化或主从同步性能。 可以手动修改配置文件来设置Redis的最大内存 # 格式&#xff1…...

C++初阶-list的底层

目录 1.std::list实现的所有代码 2.list的简单介绍 2.1实现list的类 2.2_list_iterator的实现 2.2.1_list_iterator实现的原因和好处 2.2.2_list_iterator实现 2.3_list_node的实现 2.3.1. 避免递归的模板依赖 2.3.2. 内存布局一致性 2.3.3. 类型安全的替代方案 2.3.…...

突破不可导策略的训练难题:零阶优化与强化学习的深度嵌合

强化学习&#xff08;Reinforcement Learning, RL&#xff09;是工业领域智能控制的重要方法。它的基本原理是将最优控制问题建模为马尔可夫决策过程&#xff0c;然后使用强化学习的Actor-Critic机制&#xff08;中文译作“知行互动”机制&#xff09;&#xff0c;逐步迭代求解…...

【力扣数据库知识手册笔记】索引

索引 索引的优缺点 优点1. 通过创建唯一性索引&#xff0c;可以保证数据库表中每一行数据的唯一性。2. 可以加快数据的检索速度&#xff08;创建索引的主要原因&#xff09;。3. 可以加速表和表之间的连接&#xff0c;实现数据的参考完整性。4. 可以在查询过程中&#xff0c;…...

ElasticSearch搜索引擎之倒排索引及其底层算法

文章目录 一、搜索引擎1、什么是搜索引擎?2、搜索引擎的分类3、常用的搜索引擎4、搜索引擎的特点二、倒排索引1、简介2、为什么倒排索引不用B+树1.创建时间长,文件大。2.其次,树深,IO次数可怕。3.索引可能会失效。4.精准度差。三. 倒排索引四、算法1、Term Index的算法2、 …...

GitHub 趋势日报 (2025年06月08日)

&#x1f4ca; 由 TrendForge 系统生成 | &#x1f310; https://trendforge.devlive.org/ &#x1f310; 本日报中的项目描述已自动翻译为中文 &#x1f4c8; 今日获星趋势图 今日获星趋势图 884 cognee 566 dify 414 HumanSystemOptimization 414 omni-tools 321 note-gen …...

AspectJ 在 Android 中的完整使用指南

一、环境配置&#xff08;Gradle 7.0 适配&#xff09; 1. 项目级 build.gradle // 注意&#xff1a;沪江插件已停更&#xff0c;推荐官方兼容方案 buildscript {dependencies {classpath org.aspectj:aspectjtools:1.9.9.1 // AspectJ 工具} } 2. 模块级 build.gradle plu…...

使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台

🎯 使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台 📌 项目背景 随着大语言模型(LLM)的广泛应用,开发者常面临多个挑战: 各大模型(OpenAI、Claude、Gemini、Ollama)接口风格不统一;缺乏一个统一平台进行模型调用与测试;本地模型 Ollama 的集成与前…...

ABAP设计模式之---“简单设计原则(Simple Design)”

“Simple Design”&#xff08;简单设计&#xff09;是软件开发中的一个重要理念&#xff0c;倡导以最简单的方式实现软件功能&#xff0c;以确保代码清晰易懂、易维护&#xff0c;并在项目需求变化时能够快速适应。 其核心目标是避免复杂和过度设计&#xff0c;遵循“让事情保…...

C++使用 new 来创建动态数组

问题&#xff1a; 不能使用变量定义数组大小 原因&#xff1a; 这是因为数组在内存中是连续存储的&#xff0c;编译器需要在编译阶段就确定数组的大小&#xff0c;以便正确地分配内存空间。如果允许使用变量来定义数组的大小&#xff0c;那么编译器就无法在编译时确定数组的大…...

[免费]微信小程序问卷调查系统(SpringBoot后端+Vue管理端)【论文+源码+SQL脚本】

大家好&#xff0c;我是java1234_小锋老师&#xff0c;看到一个不错的微信小程序问卷调查系统(SpringBoot后端Vue管理端)【论文源码SQL脚本】&#xff0c;分享下哈。 项目视频演示 【免费】微信小程序问卷调查系统(SpringBoot后端Vue管理端) Java毕业设计_哔哩哔哩_bilibili 项…...