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

一、字符串的访问

  • 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}`
相关推荐
iCxhust5 小时前
c# U盘映像生成工具
开发语言·单片机·c#
yangzhi_emo5 小时前
ES6笔记2
开发语言·前端·javascript
emplace_back6 小时前
C# 集合表达式和展开运算符 (..) 详解
开发语言·windows·c#
jz_ddk6 小时前
[学习] C语言数学库函数背后的故事:`double erf(double x)`
c语言·开发语言·学习
萧曵 丶6 小时前
Rust 所有权系统:深入浅出指南
开发语言·后端·rust
xiaolang_8616_wjl6 小时前
c++文字游戏_闯关打怪2.0(开源)
开发语言·c++·开源
收破烂的小熊猫~7 小时前
《Java修仙传:从凡胎到码帝》第四章:设计模式破万法
java·开发语言·设计模式
nananaij7 小时前
【Python进阶篇 面向对象程序设计(3) 继承】
开发语言·python·神经网络·pycharm
阿蒙Amon7 小时前
为什么 12 版仍封神?《C# 高级编程》:从.NET 5 到实战架构,进阶者绕不开的必修课
开发语言·c#