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

一、字符串的访问

  • 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}`
相关推荐
就叫_这个吧1 小时前
Java递归方法实现面包屑导航
java·开发语言
fīɡЙtīиɡ ℡2 小时前
AI 应用系统设计
java·开发语言·人工智能
今天AI了吗3 小时前
Python 基础语法(一):常量、变量、输入输出与运算符
开发语言·数据库·人工智能·python·sql·深度学习·机器学习
TELL5214 小时前
selenium webdriver 第二次初始化的异常
开发语言·python
动词ing4 小时前
【C语言】自定义函数+指针入门
c语言·开发语言·算法
重生之后端学习4 小时前
283. 移动零[简单]✅
开发语言·数据结构·算法·leetcode·职场和发展
动词ing5 小时前
【C语言】结构体+文件基础
c语言·开发语言·数据结构
caimouse6 小时前
ReactOS 窗口系统分析(7):分层窗口与绘制辅助 — layered.c + draw.c
c语言·开发语言
丰锋ff6 小时前
基于 Qt 的智慧社区物业管理系统
开发语言·qt
夜不会漫长6 小时前
C++入门(1)
开发语言·c++·算法