• Tcl/Tk语言学习------拆分字符串


    字符串的拆分

    前言

      字符串的处理是每种语言经常会遇到的问题,tcl作为一门脚本语言自然也不例外,关于字符串的拆分,一般会有两种情况:1.使用单个字符拆分,2.使用字符串拆分。

    1.使用单个字符拆分字符串

      

      如图所示,使用单个字符可以轻松地分割字符串。

    2.使用字符串拆分字符串

      

      当我们使用字符串拆分字符串,tcl会使用字符串中的每个字符来拆分,无法达到我们的目的。

      这时我们可以定义一个快捷的方法来使用字符串拆分字符串,如下是我新建的一个split.tcl文件的内容:

    1 proc OnePiece {str sep} {
    2     split [string map [list $sep 0] $str ] 0
    3 }
    4 set a {RookieSky}
    5 set b {ok}
    6 set c [OnePiece $a $b]
    7 puts $c

      接下来我们执行一下这个文件:

      

      从结果中我们可以看出,我们已经成功地使用字符串‘ok’来拆分‘RookieSky’

      NICE!!!

    原理

      1.split string ?splitChars?

      根据splitChars变元中的字符分解string,返回一个列表。每个列表元素由string中在splitChars字符之间的字符组成,如果string含有两个连续的字符与splitChars中的字符相同或者第一或最后一个字符为splitChars中的字符就返回一个空列表元素,如果splitChars是一个空字符串那么string的每一个字符作为单独的元素组成列表,缺省splitChars为空格符。

      2.list ?value value …?

      这个命令生成一个list,元素就是所有的value,TCL中list是由一组元素组成的有序集合,list可以嵌套定义,list的每个元素可以是任意字符串,也可以是list。

      3.string map ?-nocase? charMap str

      返回根据 charMap 中输入、输出列表将 str 中的字符进行映射后而产生的新字符串,charMap这个列表中的值我们可以看成{key value key value ...}的映射,str中已经映射过的字符串不会重复映射。

      由此我们可以理解为我们写的方法是将用来拆分的字符串和形成一个映射替换后,使用来进行拆分。

      

  • 相关阅读:
    RGB颜色原理
    JVM内存模型 三
    JVM内存模型 二
    从gcc局部static变量初始化看C/C++区别
    linux下进程堆栈下溢出判断及扩展实现
    fd/pid选择及fd/signal数量限制
    多进程/线程select同一文件问题
    从两个程序看Linux下命令行参数及execve内核实现
    从printXX看tty设备(6)tty框架及串口O_NONBLOCK何时丢失数据
    文件在多大程度、多大范围共享
  • 原文地址:https://www.cnblogs.com/RookieSky/p/10991394.html
Copyright © 2020-2023  润新知