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

一、字符串的访问

  • 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}`
相关推荐
微学AI2 小时前
一根针指向所有方向:挂谷猜想对 LLM Agent 技能-记忆架构的启示
开发语言·人工智能·架构·挂谷猜想
豆瓣鸡3 小时前
算法日记 - Day3
java·开发语言·算法
韭菜炒鸡肝天4 小时前
VTK开发笔记(一):VTK介绍,Qt..+VSx+VTK.编译
开发语言·笔记·qt
Aaron - Wistron4 小时前
Web API C# (Furion版)带 单元测试
开发语言·后端·c#
Dxy12393102165 小时前
Python项目打包成EXE完整教程(PyInstaller实战避坑)
开发语言·python
0566466 小时前
Python康复训练——常用标准库
开发语言·python·学习
骊城英雄6 小时前
基于C#+avalonia ui实现的跨平台点胶机灌胶监控控制上位机软件
开发语言·ui·c#
吾儿良辰6 小时前
一个被BCL遗忘的高性能集合:C# CircularBuffer<T>深度解析
开发语言·windows·c#
昆曲之源_娄江河畔6 小时前
Python如何安装flask, pymssql
开发语言·python·flask·pymssql
Leighteen6 小时前
`try-finally` 里的 `return`:为什么 `finally` 会悄悄改掉返回值、吞掉异常
java·开发语言