当前位置: 首页 > news >正文

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

一、字符串的访问

  • Objective-C: 使用 characterAtIndex: 方法访问字符。

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])是不允许的

要访问第二个字符,可以按照以下步骤操作:

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 中的字符串是不可变的序列,可以通过索引直接访问字符。

s = "Hello, World!"
char = s[0]  # 访问第一个字符 'H'
print(char)  # 输出: H

    • Kotlin: 通过索引直接访问字符。

    Kotlin 中的字符串是 String 类型,可以通过索引直接访问字符。

    val str = "Hello, World!"
    val char = str[0]  // 访问第一个字符 'H'
    println(char)  // 输出: H
    • JavaScript: 通过索引直接访问字符。

    JavaScript 中的字符串可以通过索引直接访问字符。

    let str = "Hello, World!";
    let char = str[0];  // 访问第一个字符 'H'
    console.log(char);  // 输出: H

    二、字符串的遍历

    • Objective-C: 使用 characterAtIndex: 和 for 循环。

     NSString *string = @"中国人民解放军";
     for (int i = 0 ; i < string.length; i++) {
         NSLog(@"遍历的结果char==%hu",[string characterAtIndex:i]);
     }
        
    • Swift: 使用 String.Index 或转换为字符数组后遍历。

    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 循环遍历字符串。

    val str = "Hello"
    for (char in str) {
        println(char)  // 逐个输出字符
    }
    • JavaScript: 使用 for 循环或 for...of 遍历字符串。

    let str = "Hello";
    for (let char of str) {
        console.log(char);  // 逐个输出字符
    }
    • Python: 直接使用 for 循环遍历字符串。

    s = "Hello"
    for char in s:
        print(char)  # 逐个输出字符

    三、字符串的拼接

    • Objective-C: 使用 stringByAppendingString: 或 stringWithFormat:

    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 方法。

    #可以通过 + 连接
    #模版语法
    str11 = "中国"
    str22 = "人民"
    str33 = f'{str11}{str22}'
    
    • Swift: 使用 + 运算符或字符串插值。

    #可以通过 + 连接
    #模版语法
    str11 = "中国"
    str22 = "人民"
    str33 = "\(str11)\(str22)"
    • Kotlin: 使用 + 运算符或字符串模板。

    #可以通过 + 连接
    #模版语法
    str11 = "中国"
    str22 = "人民"
    str33 = "$str11 $str22"
    • JavaScript: 使用 + 运算符或模板字符串。

    #可以通过 + 连接
    #模版语法
    str11 = "中国"
    str22 = "人民"
    str33 = `${str11} ${str22}`

    相关文章:

  • 2.1 Vite + Vue 3 + TS 项目脚手架深度配置
  • 夏门大学DeepSeek 手册:从社会大众到高校及企业的全面应用实践研究(附 PDF 下载)
  • 【Linux网络】I/O 世界的技术之旅:探索五种模型与 fcntl 函数的魅力
  • 信奥赛CSP-J复赛集训(模拟算法专题)(5):P1047 [NOIP 2005 普及组] 校门外的树
  • 网关相关配置
  • Vue开发前端导航栏设计【常见问题+示例代码】
  • 【C#】FrmImport导入组件
  • Java基础系列:深入解析Object类与面向对象编程核心机制
  • 数据库二三事(14)
  • “量子心灵AI“的监控仪表盘 - javascript网页设计案例
  • CTF 架构
  • 考研数一复习之拉格朗日中值定理求解函数极限
  • 第3章 nmap网络映射器(网络安全防御实战--蓝军武器库)
  • NebulaGraph学习笔记-SessionPool之getSession
  • OINH系列(自编)---> <Page 2-[1]>题库原题(少)
  • JS中的闭包(closures)一种强大但易混淆的概念
  • 【学习思维模型】
  • python 在进程中动态加载模块
  • C++复试笔记(一)
  • OpenEuler-24.03-LTS-SP1安装
  • 巴基斯坦称回应挑衅,对印度发起军事行动
  • 网络主播直播泄机密,别让这些“小事”成威胁国家安全的“突破口”
  • 上报集团社长李芸:发挥媒体优势,让中非民心在数字时代更深层互联互通
  • 方正证券总裁何亚刚到龄退休,54岁副总裁姜志军接棒
  • 850亿元!2025年中央金融机构注资特别国债(一期)拟第一次续发行
  • 江西暴雨强对流明显,专家:落雨区高度重叠,地质灾害风险高