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

news2025/3/18 16:27:54

一、字符串的访问

  • 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}`

    本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2317315.html

    如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

    相关文章

    FPGA|Verilog-SPI驱动

    最近准备蓝桥杯FPGA的竞赛&#xff0c;因为感觉官方出的IIC的驱动代码思路非常好&#xff0c;写的内容非常有逻辑并且规范。也想学习一下SPI的协议&#xff0c;所以准备自己照着写一下。直到我打开他们给出的SPI底层驱动&#xff0c;我整个人傻眼了&#xff0c;我只能说&#x…

    Windows11 新机开荒(二)电脑优化设置

    目录 前言&#xff1a; 一、注册微软账号绑定权益 二、此电脑 桌面图标 三、系统分盘及默认存储位置更改 3.1 系统分盘 3.2 默认存储位置更改 四、精简任务栏 总结&#xff1a; 前言&#xff1a; 本文承接上一篇 新机开荒&#xff08;一&#xff09; 上一篇文章地址&…

    关于deepseek R1模型分布式推理效率分析

    1、引言 DeepSeek R1 采用了混合专家&#xff08;Mixture of Experts&#xff0c;MoE&#xff09;架构&#xff0c;包含多个专家子网络&#xff0c;并通过一个门控机制动态地激活最相关的专家来处理特定的任务 。DeepSeek R1 总共有 6710 亿个参数&#xff0c;但在每个前向传播…

    揭秘大数据 | 9、大数据从何而来?

    在科技发展史上&#xff0c;恐怕没有任何一种新生事物深入人心的速度堪比大数据。 如果把2012年作为数据量爆发性增长的第一年&#xff0c;那么短短数年&#xff0c;大数据就红遍街头巷尾——从工业界到商业界、学术界&#xff0c;所有的行业都经受了大数据的洗礼。从技术的迭…

    使用Dependency Walker和Beyond Compare快速排查dll动态库损坏或被篡改的问题

    目录 1、问题描述 2、用Dependency Walker工具打开qr.dll库&#xff0c;查看库与库的依赖关系以及接口调用情况&#xff0c;定位问题 3、使用Beyond Compare工具比较一下正常的msvcr100d.dll和问题msvcr100d.dll的差异 4、最后 C软件异常排查从入门到精通系列教程&#xff…

    repo init 错误 Permission denied (publickey)

    一、已经生成ssh-key并设置到gerrit上 二、已经设置.gitconfig &#xff08;此步骤是公司要求&#xff0c;设置gerrit地址为一个别名之类的&#xff0c;有的公司不需要&#xff09; 然后出现下面的错误&#xff0c;最后发现忘记设置git的用户名和邮箱 1. git config --globa…

    TSB - AD 解读 — 迈向可靠、透明的 TSAD 任务

    目录 一 文章动机 二 TSAD 领域内的两类缺陷 三 数据集的构建 四 实验结果及结论 项目宣传链接&#xff1a;TSB-AD 代码链接&#xff1a; TheDatumOrg/TSB-AD: TSB-AD: Towards A Reliable Time-Series Anomaly Detection Benchmark 原作者解读&#xff1a;NeurIPS 2…

    论文阅读:2023-arxiv Can AI-Generated Text be Reliably Detected?

    总目录 大模型安全相关研究&#xff1a;https://blog.csdn.net/WhiffeYF/article/details/142132328 文章目录 Abstract&#xff08;摘要&#xff09;1 Introduction&#xff08;引言&#xff09;Conclusion&#xff08;结论&#xff09; Can AI-Generated Text be Reliably D…

    Language Models are Few-Shot Learners,GPT-3详细讲解

    GPT的训练范式&#xff1a;预训练Fine-Tuning GPT2的训练范式&#xff1a;预训练Prompt predict &#xff08;zero-shot learning&#xff09; GPT3的训练范式&#xff1a;预训练Prompt predict &#xff08;few-shot learning&#xff09; GPT2的性能太差&#xff0c;新意高&…

    Hoppscotch 开源API 开发工具

    Hoppscotch 是一个开源的 API 开发工具&#xff0c;旨在为开发者提供一个轻量级、快速且功能丰富的 API 开发和调试平台。以下是对其主要特性和功能的详细介绍&#xff1a; 1. 轻量级与高效 Hoppscotch 采用简约的 UI 设计&#xff0c;注重易用性和高效性。它支持实时发送请求…

    【芯片验证】面试题·对深度为60的数组进行复杂约束的技巧

    朋友发给我的芯片验证笔试题,觉得很有意思,和大家分享一下。 面试题目 class A中一个长度为60的随机数组rand int arr[60],如何写约束使得: 1.每个元素的值都在(0,100]之间,且互不相等; 2.最少有三个元素满足勾股数要求,比如数组中包含3,4,5三个点; 请以解约束最快…

    Manus “Less structure,More intelligence ”独行云端处理器

    根据市场调研机构Statista数据显示&#xff0c;全球的AR/AR的市场规模预计目前将达到2500亿美元&#xff0c;Manus作为VR手套领域的领军企业&#xff0c;足以颠覆你的认知。本篇文章将带你解读Manus产品&#xff0c;针对用户提出的种种问题&#xff0c;Manus又将如何解决且让使…

    【再读】R1-Onevision通过跨模态形式化为复杂多模态推理任务提供了系统性解决方案

    R1-Onevision:跨模态形式化驱动的多模态推理技术突破,R1-Onevision通过跨模态形式化、双阶段训练和教育级基准测试,为多模态推理树立了新标杆。其技术创新不仅提升了模型在复杂任务中的表现,更重要的是为行业提供了一种可解释、可迁移的多模态处理范式。随着形式化方法的不断…

    SSM框架——Spring面试题

    Spring常见面试题 Spring框架中的单例bean是线程安全的吗 不是线程安全的 Spring框架中有一个Scope注解&#xff0c;默认的值就是singleton&#xff0c;单例的。 因为一般在spring的bean的中都是注入无状态的对象&#xff0c;没有线程安全问题&#xff0c;如果在bean中定义了可…

    云原生大佬重生,记忆逐步复苏(十三:selinux模块)

    目录 1&#xff1a;什么是selinux 1.1 SELinux 的作用 1.2. SELinux 的工作原理 1.3. SELinux 的运行模式 2:解析selinux文件上下文标签策略 3&#xff1a;selinux的布尔值 4:调查和解决selinux问题 1&#xff1a;什么是selinux SELinux&#xff08;Security-Enhanced L…

    MySQL高频八股——事务过程中Undo log、Redo log、Binlog的写入顺序(涉及两阶段提交)

    大家好&#xff0c;我是钢板兽&#xff01; 在上一篇文章中&#xff0c;我分别介绍了 Undo Log、Redo Log 和 Binlog 在事务执行过程中的作用与写入机制。然而&#xff0c;实际应用中&#xff0c;这三种日志的写入是有先后顺序的。因此&#xff0c;本篇文章将深入探讨它们的写…

    C++进阶——AVL树的实现

    1、AVL的概念 1.1 AVL 树的发明 AVL 树由 G.M. Adelson-Velsky 和 E.M. Landis 在 1962 年的论文《An algorithm for the organization of information》中提出。他们的设计目标是解决二叉搜索树在动态操作&#xff08;插入、删除&#xff09;中可能退化为链表的问题。 1.2 …

    打包当前Ubuntu镜像 制作Ubuntu togo系统

    我的系统的基本情况说明&#xff1a; 我原来的系统的具体型号如下&#xff1a; uname -rLinux Engine 5.15.0-134-generic #145~20.04.1-Ubuntu SMP Mon Feb 17 13:27:16 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux我原来的硬盘以及分区策略如下&#xff1a; 可以看到我的分区…

    系统架构设计师—案例分析—架构设计

    文章目录 经典架构风格对比面向对象架构风格/显示调用风格优点缺点举例 事件驱动的系统/隐式调用风格优点缺点举例 基于规则的系统架构风格优点缺点举例 管道过滤器风格优点缺点举例 仓库风格优点缺点举例 解释器风格优点缺点举例 分层架构风格优点缺点举例 经典架构风格对比 …

    基于javaweb的SpringBoot智能相册管理系统图片相册系统设计与实现(源码+文档+部署讲解)

    技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;免费功能设计、开题报告、任务书、中期检查PPT、系统功能实现、代码编写、论文编写和辅导、论…