一、字符串的访问
- 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}`