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

一、字符串的访问

  • 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}`
相关推荐
hsjkdhs12 分钟前
C++之友元函数与前向引用
开发语言·c++
ajassi200033 分钟前
开源 C# 快速开发(十二)进程监控
开发语言·开源·c#
库库8391 小时前
Java微服务知识点详细总结
java·开发语言·微服务
txwtech1 小时前
第4篇 vs2019+QT调用SDK连接海康相机显示图片
开发语言·数码相机·qt
王嘉俊9251 小时前
Flask 入门:轻量级 Python Web 框架的快速上手
开发语言·前端·后端·python·flask·入门
做运维的阿瑞2 小时前
Python 面向对象编程深度指南
开发语言·数据结构·后端·python
木木子99992 小时前
Python的typing模块:类型提示 (Type Hinting)
开发语言·windows·python
她说人狗殊途2 小时前
Spring IoC容器加载过程 vs Bean生命周期对应关系图
java·开发语言·rpc
MediaTea2 小时前
Python 编辑器:PyCharm
开发语言·ide·python·pycharm·编辑器
0wioiw02 小时前
Go基础(⑦实例和依赖注入)
开发语言·golang