《仓颉语言实战》仓颉字符串与字符处理10+技巧:顺手写一个猜数字小游戏
2026/9/24 14:38:21 网站建设 项目流程

《仓颉语言实战》仓颉字符串与字符处理10+技巧:顺手写一个猜数字小游戏

【免费下载链接】仓颉语言实战-张磊仓颉语言实战由张磊编写,清华大学出版社出版。 该书践行“零基础入门仓颉语言”的理念,具有内容通俗易懂,知识点循序渐进的特点,可以帮助读者快速掌握仓颉编程语言。项目地址: https://gitcode.com/Cangjie-SIG/cangjieyuyanshizhan-ZL

《仓颉语言实战》(张磊 著,清华大学出版社)是零基础入门仓颉语言的好帮手,书中第20章"字符及字符串处理"用十余个贴近开发的示例,系统讲解仓颉字符串与字符的常用操作方法,并带你亲手写一个猜数字小游戏,把字符串处理知识真正用起来。本文带你快速梳理这些仓颉字符串技巧,看懂游戏的实现思路。

为什么值得学仓颉字符串处理 📚

字符串是开发中出现频率最高的数据类型:解析用户输入、拼接日志、格式化输出、处理文本文件……都离不开它。本章示例全部位于 code/Chapter20/ 目录,代码简洁、循序渐进,非常适合新手跟练。

本章涵盖的仓颉字符串技巧主要有 6 大类:

技巧类别核心方法示例文件
查找字符/子串indexOflastIndexOffind_char_demo.cj
截取子串下标范围[start..end]substring_demo.cj
分割字符串splitsplit_demo.cj
连接字符串+拼接、String.joinjoin_demo.cj
去除空白字符trimAscii系列trim_demo.cj
字符判断与转换isAsciiNumbertoAsciiUpperCasechar_demo.cj

仓颉字符串技巧速览

1️⃣ 查找字符和子字符串:indexOf / lastIndexOf

仓颉的indexOf既支持查单个字符(用b'A'这种字节字面量),也支持查子字符串,返回值是Option类型——找到返回Some(位置),没找到返回None,非常符合仓颉的类型安全风格。lastIndexOf还可以指定从哪个索引开始往前找。

📎 参考:find_char_demo.cj、find_substring_demo.cj

2️⃣ 截取子串:用下标范围一步到位

想取"从第 11 位到结尾"或"从第 15 位起 4 个字符",直接用下标范围表达式oriString[11..]oriString[15..15+4]即可,不需要额外传参,写法清爽。

📎 参考:substring_demo.cj

3️⃣ 分割字符串:split 一行切成数组

split按指定分隔符把字符串切成数组,还能限制最多分割出的段数。处理诗词、CSV 数据、按标点断句等场景都很顺手,切完再配合trimAscii去掉每段前后空白,体验更佳。

📎 参考:split_demo.cj

4️⃣ 连接字符串:join 比循环拼接更快

把数组里的字符串连成一整串,循环+String.join都能实现。书里用一个一百万次循环的性能对比实验证明:join的效率明显优于反复拼接,批量合并字符串时优先选join

📎 参考:join_demo.cj

5️⃣ 去除首尾空白:trim 系列三件套

  • trimAscii():去除首尾空白
  • trimAsciiStart():只去开头
  • trimStart("前缀"):去指定前缀字符串

用户输入几乎都要过一遍trim,猜数字游戏里就大量使用了它。

📎 参考:trim_demo.cj

6️⃣ 字符判断与转换:一套 isAscii 方法走天下

isAsciiNumber()判断是不是数字、isAsciiLowerCase()判断是不是小写字母、isAsciiWhiteSpace()判断是不是空白,配合toAsciiUpperCase()做大小写转换,覆盖 90% 的字符处理需求。

📎 参考:char_demo.cj

顺手写一个猜数字小游戏 🎮

技巧学完了,书里用它们组合出一个完整的仓颉猜数字小游戏:每局程序随机生成 0~100 的数字,你只能用>、>=、==、<、<=等符号加数字向它"提问",它只回答 Yes 或 No,直到你猜中为止。完整代码见 figure_guessing_game.cj。

游戏逻辑是怎么实现的?

第一步:读取并清洗输入。每轮用Console.stdIn.readln()读一行,输入出错时兜底为"q",再trimAscii()去掉首尾空白:

var input = (Console.stdIn.readln() ?? "q").trimAscii()

第二步:解析"符号 + 数字"。这是游戏的核心函数getOpAndNum,把>50<=38==47这类输入拆成操作符和数字两部分。它用上了本章多个技巧:

  • input.isEmpty()判空、input[0].isAsciiNumber()判断首字符类型
  • input[0..=1]input[2..]下标范围截取符号和数字
  • Int64.tryParse(...)安全转整数,失败返回None,全程不抛异常

第三步:match 执行判断。根据操作符==、>、>=、<、<=分别计算真假并打印结果;猜中后提示按n开新局、按q退出,一个while循环串起整局游戏。

💡 这个小游戏把字符串解析、字符判断、安全类型转换、Option 模式匹配串成了一条完整链路,正是本章知识"学以致用"的缩影。

完整示例代码在哪看?

本章全部示例都集中在 code/Chapter20/ 目录,建议按"先单点技巧、后综合游戏"的顺序跟练:

  • 字符技巧:char_demo.cj
  • 查找字符/子串:find_char_demo.cj、find_substring_demo.cj
  • 截取子串:substring_demo.cj
  • 分割/连接:split_demo.cj、join_demo.cj
  • 去空白:trim_demo.cj
  • 综合实战:figure_guessing_game.cj

小结

掌握indexOfsplitjointrim和字符判断这几组方法,就能应付日常开发中绝大部分文本处理需求。照着《仓颉语言实战》第20章跟练一遍,再亲手把猜数字小游戏跑起来,你会发现:字符串处理,就是这么简单又实用 ✅

【免费下载链接】仓颉语言实战-张磊仓颉语言实战由张磊编写,清华大学出版社出版。 该书践行“零基础入门仓颉语言”的理念,具有内容通俗易懂,知识点循序渐进的特点,可以帮助读者快速掌握仓颉编程语言。项目地址: https://gitcode.com/Cangjie-SIG/cangjieyuyanshizhan-ZL

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询