【问题标题】:How to remove leading zeros from decimal strings [closed]如何从十进制字符串中删除前导零 [关闭]
【发布时间】:2018-04-10 13:57:56
【问题描述】:

给定一个存储为字符串的十进制值数组,例如

["006", "025", "004", "034", "158", "019", "255", "000"]

如何删除所有前导零,同时将值保留为字符串以获取

["6", "25", "4", "34", "158", "19", "255", "0"]

【问题讨论】:

  • 问题有点不清楚——006 025 004 034 158 019 255 000 是什么?数组?一个字符串? (如果是,分隔符是什么?一个空格?)
  • “我有以下输出” – 你是如何生成该输出的?请出示您的代码。
  • 请编辑问题而不是试图在评论中澄清。
  • 您的问题仍然需要澄清。结果应该是一个字符串、一个数字数组、一个字符串数组还是完全其他的东西?
  • 我投反对票并投票结束,因为 OP 已经看到了上面的 cmets,但未能编辑问题以澄清所问的内容。

标签: ruby


【解决方案1】:
"006 025 004 034 158 019 255 000".gsub(/(?<= |\A)0+(?=\d)/,'')
  #=> "6 25 4 34 158 19 255 0"

正则表达式如下:

  • 匹配空格或字符串开头的正向向后查找
  • 匹配一个或多个零
  • 在正向前瞻中匹配一个数字

【讨论】:

  • 今天发生了一些奇怪的投票。没有理由对此投反对票。
  • 我在 OP 在评论中指出接收器是字符串数组而不是字符串之前发布了我的答案。
  • @SagarPandya:当您将鼠标悬停在向下投票箭头上时,工具提示会提供有关何时向下投票的指导:“这个答案没有用”。有些人将有用解释为“对Stack Overflow 社区有用”,从这个意义上说,对蹩脚问题的回答是没有用的,因为它们奖励反社会(在“社会”的意义上是Stack Overflow 社区在大)行为。我不知道谁以及为什么不赞成这个答案,但这是一种可能的解释。
  • @JörgWMittag 我明白了,这是有道理的。虽然如果是这种情况,那么我希望选民是一致的,并且对这个问题的所有答案都投了反对票。
  • 你也可以用\b代替(?&lt;= |\A)
【解决方案2】:

来自“Remove leading zeros Ruby”:

string = '006 025 004 034 158 019 255 000'
answer = string.split(",").map(&:to_i)

这会返回:

[6, 25, 4, 34, 158, 19, 255, 0]

如果您想将其展平并将其转回相同格式的字符串:

answer = answer.join(' ')

离开:

"6 25 4 34 158 19 255 0"

【讨论】:

  • 您可以使用map(&amp;:to_i) 进行映射。
  • 好点,谢谢 - 更新了我的答案
  • 您的split 无法以当前形式工作,原始字符串中没有逗号。使用split(/\s+/) 分割一个或多个空格,或使用split(/\D+/) 分割任何类型的一个或多个非数字。
  • @pjs 或只是.split
  • @mudasobwa .split 无法处理像'1 2;30 04' 这样时髦的东西。 .split(/\D+/) 将。
猜你喜欢
  • 2019-10-20
  • 1970-01-01
  • 1970-01-01
  • 2021-08-12
  • 1970-01-01
  • 2011-04-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多