不同开发语言对字符串的操作

一、字符串的访问

  • Objective-C : 使用 characterAtIndex: 方法访问字符。
objectivec 复制代码
NSString *str = @"Hello, World!";
unichar character = [str characterAtIndex:0];  // 访问第一个字符 'H'
NSLog(@"%C", character);  // 输出: H

NSString 内部存储的是 UTF-16 编码的字符序列,而不是简单的字符数组。由于 Unicode 字符的长度可能不同(例如,某些字符由多个 UTF-16 码点组成),直接通过索引访问字符可能会导致错误。所以只能通过 [str characterAtIndex:0]; 访问

  • Swift : 使用 String.Index 访问字符。

在 Swift 中,字符串的字符访问需要通过 String.Index 来实现,因为 Swift 的字符串是由 Unicode 标量组成的,字符的长度可能不一致(例如,某些字符由多个 Unicode 标量组成)。因此,直接使用整数索引(如 str[1])是不允许的

要访问第二个字符,可以按照以下步骤操作:

javascript 复制代码
let str = "Hello, World!"

// 获取字符串的起始索引
let startIndex = str.startIndex

// 计算第二个字符的索引
let secondCharIndex = str.index(startIndex, offsetBy: 1)

// 访问第二个字符
let secondChar = str[secondCharIndex]

print(secondChar)  // 输出: e

Swift 的字符串索引是 String.Index 类型,而不是简单的整数。

  • Python: 通过索引直接访问字符。

Python 中的字符串是不可变的序列,可以通过索引直接访问字符。

python 复制代码
s = "Hello, World!"
char = s[0]  # 访问第一个字符 'H'
print(char)  # 输出: H
  • Kotlin: 通过索引直接访问字符。

Kotlin 中的字符串是 String 类型,可以通过索引直接访问字符。

Kotlin 复制代码
val str = "Hello, World!"
val char = str[0]  // 访问第一个字符 'H'
println(char)  // 输出: H
  • JavaScript: 通过索引直接访问字符。

JavaScript 中的字符串可以通过索引直接访问字符。

javascript 复制代码
let str = "Hello, World!";
let char = str[0];  // 访问第一个字符 'H'
console.log(char);  // 输出: H

二、字符串的遍历

  • Objective-C : 使用 characterAtIndex:for 循环。
objectivec 复制代码
 NSString *string = @"中国人民解放军";
 for (int i = 0 ; i < string.length; i++) {
     NSLog(@"遍历的结果char==%hu",[string characterAtIndex:i]);
 }
    
  • Swift : 使用 String.Index 或转换为字符数组后遍历。
Swift 复制代码
let str = "Hello"
var index = str.startIndex
while index < str.endIndex {
    let char = str[index]
    print(char)  // 逐个输出字符
    index = str.index(index, offsetBy: 1)
}
  • Kotlin : 直接使用 for 循环遍历字符串。
Kotlin 复制代码
val str = "Hello"
for (char in str) {
    println(char)  // 逐个输出字符
}
  • JavaScript : 使用 for 循环或 for...of 遍历字符串。
javascript 复制代码
let str = "Hello";
for (let char of str) {
    console.log(char);  // 逐个输出字符
}
  • Python : 直接使用 for 循环遍历字符串。
python 复制代码
s = "Hello"
for char in s:
    print(char)  # 逐个输出字符

三、字符串的拼接

  • Objective-C : 使用 stringByAppendingString:stringWithFormat:
python 复制代码
NSString *str1 = @"Hello";
NSString *str2 = @" World!";
NSString *result = [str1 stringByAppendingString:str2];
NSLog(@"%@", result);  // 输出: Hello World!

NSString *str1 = @"Hello";
NSString *str2 = @"World";
NSString *result = [NSString stringWithFormat:@"%@ %@!", str1, str2];
NSLog(@"%@", result);  // 输出: Hello World!
  • Python : 使用 + 运算符或 join 方法。
python 复制代码
#可以通过 + 连接
#模版语法
str11 = "中国"
str22 = "人民"
str33 = f'{str11}{str22}'
  • Swift : 使用 + 运算符或字符串插值。
python 复制代码
#可以通过 + 连接
#模版语法
str11 = "中国"
str22 = "人民"
str33 = "\(str11)\(str22)"
  • Kotlin : 使用 + 运算符或字符串模板。
python 复制代码
#可以通过 + 连接
#模版语法
str11 = "中国"
str22 = "人民"
str33 = "$str11 $str22"
  • JavaScript : 使用 + 运算符或模板字符串。
python 复制代码
#可以通过 + 连接
#模版语法
str11 = "中国"
str22 = "人民"
str33 = `${str11} ${str22}`
相关推荐
w2sfot1 小时前
Passing Arguments as an Object in JavaScript
开发语言·javascript·ecmascript
郝学胜-神的一滴1 小时前
避免使用非const全局变量:C++中的最佳实践 (C++ Core Guidelines)
开发语言·c++·程序人生
搞一搞汽车电子1 小时前
S32K3平台eMIOS 应用说明
开发语言·驱动开发·笔记·单片机·嵌入式硬件·汽车
总有刁民想爱朕ha2 小时前
车牌模拟生成器:Python3.8+Opencv代码实现与商业应用前景(C#、python 开发包SDK)
开发语言·python·数据挖掘
小菜全3 小时前
uniapp新增页面及跳转配置方法
开发语言·前端·javascript·vue.js·前端框架
人衣aoa3 小时前
Python编程基础(八) | 类
开发语言·python
晚云与城3 小时前
今日分享:C++ Stack和queue(栈与队列)
开发语言·c++
小莞尔3 小时前
【51单片机】【protues仿真】基于51单片机停车场的车位管理系统
c语言·开发语言·单片机·嵌入式硬件·51单片机
张烫麻辣亮。3 小时前
golang-gin包
开发语言·golang·gin
yuluo_YX3 小时前
Go Style 代码风格规范
开发语言·后端·golang