[Day05] swift & kotlin 入门篇!(3) 基础语法-字串

字串

想当初刚在学习JAVA时
一段 new String("ami") != new String("ami")
输出结果是false
搞得一个程序小萌新坐在教室里一脸蒙
导致现在的我每次在学习一个新语言时
都会特别多看一点字串操作方面的文件
接下来一起研究一下字串吧!

swift


// 字串宣告
let name = "swift"

// 字串连接
let welString1 = "Welcome, " + name + "!"
print(welString1) // 输出: Welcome, swift!

// 字串插值
let welString2 = "Welcome, \(name)!"
print(welString2) // 输出: Welcome, swift!

// 字串赋值与修改
var welString3 = welString2
welString3 += " Have a nice time!"
print(welString3) // 输出: Welcome, swift! Have a nice time!

// 字串直接比对值
print(welString2 == "Welcome, swift!") // 输出: true

// 字串比对 实际上是比对 Unicode值
print("é" == "e\u{301}") // 输出: true

// 撷取字串元素 取字串 直到第一个空白为止
let myName = "Ami Wu"
print( myName.split(separator: " ")[0]) // 输出: Ami

// 取字串数量
print(myName.count) // 输出: 6

// 字串转阵列
print(Array(myName)) // 输出: ["A", "m", "i", " ", "W", "u"]

// 新增字串
var newName = "new"
newName.append(" day")
print(newName) // 输出: new day

// 大小写转换
print("ami Test".lowercased()) // 输出: ami test
print("ami Test".uppercased()) // 输出: AMI TEST


// 判断字串
print("ami test".hasPrefix("ami")) // 前缀 输出: true
print("ami test".hasSuffix("test")) // 後缀 输出: true
print("ami test".contains("te")) // 包含 输出: true

// 多行文字模板
let s1 = """
这边可以多行输入
    很方便喔
"""
print(s1) 
//输出: 
//这边可以多行输入
//    很方便喔

字串操作上蛮直觉的
只是 \() 这种插值法 蛮特别的
多行模板操作起来也很方便

kotlin

fun main() {
    // 字串宣告
	val name = "kotlin"
    
    // 字串连接
    val welString1 = "Welcome, " + name + "!"
	println(welString1) // 输出: Welcome, kotlin!

    // 字串插值
    val welString2 = "Welcome, $name!"
    println(welString2) // 输出: Welcome, kotlin!

    // 字串赋值与修改
    var welString3 = welString2
    welString3 += " Have a nice time!"
    println(welString3) // 输出: Welcome, kotlin! Have a nice time!

    // 字串直接比对值
    println(welString2 == "Welcome, kotlin!") // 输出: true

    // 字串比对 实际上是比对 Unicode值
    println("é" == "e\u0301") // 输出: false "é" 与  "é" 实际上比对会不相等
    
    // 访问字串元素 取字串 直到第一个空白为止
    var myName = "Ami Wu"
    println(myName.split(' ')[0]) // 输出: Ami
    
    // 取字串数量
    println(myName.length) //6

    // 字串转阵列
    println(myName.toList()) // 输出: [A, m, i,  , W, u]
    
    // 新增字串
    var newName = "new"
    println(newName.plus(" day")) // 输出: new day
    println(newName) //并不会直接改变 // 输出: new
    
    // 大小写转换
    println("ami Test".lowercase()) // 输出: ami test
    println("ami Test".uppercase()) // 输出: AMI TEST
    
    // 判断字串
    println("ami test".startsWith("ami")) // 判断起始 输出: true
    println("ami test".endsWith("test")) // 判断结尾 输出: true
    println("ami test".contains("te")) // 包含 输出: true
    
    // 多行文字模板 他会连前方空白一起加入
    var s1 = """
    这边可以多行输入
        很方便喔
    """
    print(s1) 
    // 输出: 
    //    这边可以多行输入
    //        很方便喔

}

kotlin 在字串操作上 与swift只有用字上稍微不同
其他大部分都相同
但 "é" != "é" 这件事情...倒是让人有点困惑
不是困惑为什麽不能相等.... 而是Swift为什麽相等了?

小碎嘴时间 ヽ(゚´Д`)ノ゚

今天阿咪我困惑啊

é != é

是我眼睛业障重吗?
文字看起来一样
但JS的 charAt 一个是101 一个是 233
Unicode 一个是 %E9 一个是 e%u0301
除了Swift之外 其他语言判断起来都不相等
连用equals判断也不相等 ლ(゚д゚ლ)

你说说我容易吗
看着官方Swift的文件练习一下
就卡关!?

我还拿着这题去问写iOS APP的朋友
他们回我...这题太深入了 没研究

这颗大苹果啊~你的开发文件水很深啊
有没有Swift大神可以指教一下

这到底是什麽道理~


<<:  WordPress 如何自动显示文章图片边框

>>:  [CSS] Flex/Grid Layout Modules, part 8

Day18 订单 -- 优惠项目

前几天我们把购物车流程跑完了,其中有讲到优惠的部份, 因此我们订单需要新增table来储存该内容,这...

Swift 新手-建立 Laravel 开发环境

浏览了超过 50 篇文章,直到找到这篇影音教学,真的是非常符合目前的需求~! 观看影片後也能轻松上手...

Day 02 : Python 基础观念 (1)

变数 变数基本上是用来暂时储存资料的地方,可以想像在我们执行程序的时候,需要用一个代号去代表我们需要...

EP 7: Design the layout of item by DataTemplate in TopStore App

Hello, 各位 iT邦帮忙 的粉丝们大家好~~~ 本篇是 Re: 从零开始用 Xamarin 技...

#4 Array & Object in JavaScript

因为感觉在操作上还蛮常用到 array 及 object 的各种方法,所以这篇就来说说 JavaSc...