要实现一个功能:

从 lua 文件中提取字符串放到 excel 中,再将 excel 给海外同事,翻译完成后,用翻译的文本替换相应中文。

整个功能并不复杂,要点有二点:

1、提取字符串,一行中文如“我是中文…”,中间可能会遇到”我是中文\”xx\”我是中文”,如果用正则\”[^\”]+\”则会匹配失败,思路就是先将\”替换,查找成功后再将其替换回来,excel中有三列,分别是:key、中文、待翻译文本。

2、替换 lua 文件中的中文,先将 excel 读出来放到 Dictionary<string, string[]>对象中,然后逐行读取 lua 文件,拿到 key、中文,再从 Dictionary 中查找,满足条件后则进行替换。

以繁体为例

为了防止出现:新增了一个 key,或者某个 key 对应的中文有修改,所以在替换的时候有严格的检查。必须该行的 key、value,都存在于 excel 中,才替换相应的内容(仅一次)。

str9999="我是中文"--[["我是中文"]]

用string.Replace操作时,上面“我是中文”全部都被替换,不是所期望的。假设韩文或者越南文,我们肯定希望知道这个字符串所表示的含义,故特地将中文保留下来。new Regex().Replace 方法处理字符串嵌套比较麻烦,最后改为 string.Remove().Insert() 来处理。

讲到这里,基本都是在讲该功能的一些实现细节。在替换我提交SVN的时候,我就发现,明明该lua文件有3405行,但只显示3404行,最后一行是换行符,被干掉了。然后我查代码,发现没问题,被狗吃了?

如果最后一行改为字符串,如a,行数显示正常。

如果我额外加5行,显示结果是3409,说明加的5行都识别了,并没有对我添加的换行有特殊处理。

但最后一行换行就是不被读取。所以,我怀疑ReadLine方法压根就没读最后一行。查了一下官方文档,找到了答案:

将行定义为后面的字符后跟一条线序列︰ 换行符 ("\n")、 回车符 ("\r") 或回车符后跟一条线换行符 ("\r\n")。 返回的字符串不包含终止回车或换行。 返回的值是 null 如果到达了输入流的末尾。

所谓“终止”回车或换行,指的就是上面遇到的,文件最后一行是如果是换行\回车,它不会读取最后一行。

如果使用ReadLine对文件进行行数统计,需要注意最后一个终止回车/换行并不会被读取,不然得到的行数永远会少1

C# StreamReader.ReadLine统计行数的问题相关推荐

  1. server sql 数据总行数_sql统计行数的语句

    求一个sql统计行数的语句 col1  col2 ------------------- A1   2010xx A2   2010cx A1   2010ddd A2   2011dfsd A3   ...

  2. Shell 统计行数(wc -l)

    wc -l:统计行数,原理就是统计了结果中的换行符数量. who:获取当前计算机的登录用户列表. 案例 # 这台电脑有几个用户登录了 $ who | wc -l 1# 当前目录下有几个文件夹 $ ls ...

  3. Linux统计行数命令wc(转)

    Linux wc命令用于计算字数. 利用wc指令我们可以计算文件的Byte数.字数.或是列数,若不指定文件名称.或是所给予的文件名为"-",则wc指令会从标准输入设备读取数据. 语 ...

  4. linux shell 统计行数的8种方法

    方法一 awk '{print NR}' test1.sh|tail -n1 示例: [root@adiislogdata164 test]# ls front_action.log.2015-05- ...

  5. excel统计行数_工程人常用的12个excel和9个wps技巧

    点击上方蓝字,记得关注我们! 搞工程的人要干的事,不只局限于在现场严格按照标准监督施工进行,还需要同时对收集到的资料进行收集整理,搞搞内业工作.然而很多人都是新上手,难免会对某些办公软件有些生涩. E ...

  6. excel统计行数_值得收藏的6个Excel函数公式(有讲解)

    收藏的Excel函数大全公式再多,几天不用也会忘记.怎么才能不忘?你需要了解公式的运行原理.小编今天不再推送一大堆函数公式,而是根据提问最多的问题,精选出6个实用的,然后详细的解释给大家. 1.计算两 ...

  7. C语言(CED)统计行数

    题目: 编写一个程序,要求统计输入文本的行数. Input 每行输入任意长度的字符串(每一行的字符串的长度小于等于1000),以输入仅由符号@构成的行作为结束, @所在的行不计入行数. Output ...

  8. excel统计行数_百万到亿级数据,快速统计查询

    大家好,我是dk.这是Excel神器PowerQuery实战入门系列的第3篇.往后,我会更新更多关于PQ的相关内容,有兴趣的小伙伴可以关注下. 众所周知,Excel2003版最大行数是65536行,到 ...

  9. c语言统计行数单词数字符数,C语言统计字数行数单词数的程序

    代码可自由使用 一个统计文本字符数.单词数.行数的C语言程序 //注意输入的文本要以| 结尾 #include #include #define STOP '|' int main(void) { c ...

最新文章

  1. arm架构的linux芯片方案,ARM推64位处理器架构ARMV8及芯片[多图]
  2. 理解统计信息(3/6):谁创建和管理统计信息?在性能调优中,统计信息的作用。...
  3. ssh linux 配置文件详解,Linux ssh服务常用配置的详细描述及建议配置
  4. java上传文件堆溢出_我的正则表达式导致Java中的堆栈溢出;我错过了什么?
  5. 全面的Spring Boot配置文件详解
  6. datagridview列 值提取_Pandas中的缺失值处理
  7. 7.王道考研数据结构-队列
  8. jdk的安装(redhat)
  9. Python ini文件读取(configparser模块)(转载)
  10. 远程桌面连接Windows后显示蓝屏
  11. STM32CUBEIDE USB下载总是连接不上 总是USBD_BUSY
  12. 2021届大学毕业生薪酬排名出炉 | 超50所高校月薪过万!
  13. windows10编译与调试webrtc
  14. html旋转木马 代码,JavaScript实现旋转木马轮播图
  15. 360安全卫士团队版or企业版卸载
  16. VUE前端应用部署页面访问404问题
  17. AI当“暖男”:给裸照自动穿上比基尼
  18. 机器学习中的模型是什么?
  19. html 输入选择框
  20. 计算机备课组学期工作计划,信息技术备课组工作计划

热门文章

  1. 洛谷 题解 P1135 【奇怪的电梯】
  2. building tool
  3. Web中树形数据(层级关系数据)的实现—以行政区树为例
  4. Mysql5.7.16安装过程
  5. 使用Maven搭建Struts2框架的开发环境
  6. 注解的力量 -----Spring 2.5 JPA hibernate 使用方法的点滴整理(四):使用 命名空间 简化配置...
  7. Mybatis自学日志02
  8. Hadoop开启Kerberos安全模式
  9. 设置mysql8的root可以远程访问
  10. 微信小程序启动、更新机制