如何在分割一个字符串时忽略连续的空格或制表符

 我来答
huanglenzhi
推荐于2016-02-18 · 知道合伙人数码行家
huanglenzhi
知道合伙人数码行家
采纳数:117538 获赞数:517184
长期从事计算机组装,维护,网络组建及管理。对计算机硬件、操作系统安装、典型网络设备具有详细认知。

向TA提问 私信TA
展开全部
  假设现在我们有一个字符串line1。该字符串含有四个域,分别是a、b、c和d。a的左边有一个空格,a和b之间有一个空格,b和c之间有两个空格,c和d之间有一个空格和一个制表符,d的右边有一个制表符。如下所示:
  [cpp] view plaincopy
  % set line1 " a b c /td/t"
  a b c d
  % string length $line1
  11

  就如你已经知道的,如果直接用split命令将line1分割,返回的列表长度将会是8:
  [cpp] view plaincopy
  % set fields1 [split $line1]
  {} a b {} c {} d {}
  % llength $fields1
  8

  如果想要返回的列表只包含a、b、c和d这四个元素,那么可以采用以下办法:
  首先将line1首尾的空白字符去除,得到line2字符串:
  [cpp] view plaincopy
  % set line2 [string trim $line1]
  a b c d
  % string length $line2
  9

  然后用regsub命令将line2中连续的空格或制表符替换为一个制表符(或一个空格),得到line3字符串:
  [cpp] view plaincopy
  % regsub -all {[[:blank:]]+} $line2 "/t" line3
  3
  % puts $line3
  a b c d
  % string length $line3
  7

  最后对line3进行分割即可:
  [cpp] view plaincopy
  % set fields [split $line3]
  a b c d
  % llength $fields
  4
百事牛
2024-10-22 广告
百事牛是共享提供商,我们提供可靠有效的服务,适当合理的授权费有利于的继续更新优化。同样的事情,同样的方法,百事牛团队十年磨一剑,始终至聚焦在密码恢复领域,深耕于此,我们已研制出有别于其他公司的算法和运算模式, 百事牛的暴力模式加入了分布式点... 点击进入详情页
本回答由百事牛提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式