Ruby 如何在字符串末尾的多个位置插入字符

Ruby 如何在字符串末尾的多个位置插入字符,ruby,string,algorithm,Ruby,String,Algorithm,输入如下: 100000000 1000 100 100000 10000 我需要从字符串的末尾开始插入字符(,)。第一次是从字符串的末尾插入三个字符之后,然后每隔两个字符重复插入(,) 输出 10,00,00,000 1,000 100 1,00,000 10,000 若有任何提示,我需要从字符串末尾开始插入char(',') 谢谢 使用下面基于正向前瞻的正则表达式 gsub(/(\d)(?=(?:\d{2})*\d{3}$)/, "$1,") 使用下面基于正向前瞻的正则表达式 gsub

输入如下:

100000000
1000
100
100000
10000
我需要从字符串的末尾开始插入字符(,)。第一次是从字符串的末尾插入三个字符之后,然后每隔两个字符重复插入(,)

输出

10,00,00,000
1,000
100
1,00,000
10,000
若有任何提示,我需要从字符串末尾开始插入char(',')


谢谢

使用下面基于正向前瞻的正则表达式

gsub(/(\d)(?=(?:\d{2})*\d{3}$)/, "$1,")

使用下面基于正向前瞻的正则表达式

gsub(/(\d)(?=(?:\d{2})*\d{3}$)/, "$1,")

这里有两种方法,第一种使用正则表达式,最后一种只是在循环中插入逗号

a = %w| 100000000 1000 100 100000 10000 |
  #=> ["100000000", "1000", "100", "100000", "10000"]
#1使用正则表达式

r = /
    (?<=\d)    # match digit in positive lookbehind
    \d{2}      # match two digits
    (?=        # begin positive lookahead
    (?:\d{2})* # match two digits, repeated zero or more times
    \d         # match last digit
    \z         # match end of string
    )          # end positive lookahead
    /x         # extended mode

a.each { |s| puts "#{s} -> #{ s.gsub(r) { |ss| ',' + ss } }" }
100000000 -> 10,00,00,000
1000 -> 1,000
100 -> 100
100000 -> 1,00,000
10000 -> 10,000
dup
ed
string
,假设你不想变异
string

或者

def insert_commas(string)
  sz = string.size
  return string if sz < 4
  p = sz.even? ? 1 : 2
  string[0,p] + string[p..-2].gsub(/\d{2}/) { |s| ",#{s}" } + string[-1]
end
def插入_逗号(字符串)
sz=string.size
如果sz<4,则返回字符串
p=sz.偶数?1 : 2
字符串[0,p]+string[p..-2].gsub(/\d{2}/){s}>,{s}}+string[-1]
结束

这里有两种方法,第一种使用正则表达式,最后一种只是在循环中插入逗号

a = %w| 100000000 1000 100 100000 10000 |
  #=> ["100000000", "1000", "100", "100000", "10000"]
#1使用正则表达式

r = /
    (?<=\d)    # match digit in positive lookbehind
    \d{2}      # match two digits
    (?=        # begin positive lookahead
    (?:\d{2})* # match two digits, repeated zero or more times
    \d         # match last digit
    \z         # match end of string
    )          # end positive lookahead
    /x         # extended mode

a.each { |s| puts "#{s} -> #{ s.gsub(r) { |ss| ',' + ss } }" }
100000000 -> 10,00,00,000
1000 -> 1,000
100 -> 100
100000 -> 1,00,000
10000 -> 10,000
dup
ed
string
,假设你不想变异
string

或者

def insert_commas(string)
  sz = string.size
  return string if sz < 4
  p = sz.even? ? 1 : 2
  string[0,p] + string[p..-2].gsub(/\d{2}/) { |s| ",#{s}" } + string[-1]
end
def插入_逗号(字符串)
sz=string.size
如果sz<4,则返回字符串
p=sz.偶数?1 : 2
字符串[0,p]+string[p..-2].gsub(/\d{2}/){s}>,{s}}+string[-1]
结束

什么是“惰性”?“tag(,)”和“char(',')”有何不同?什么是“惰性”?“tag(,)”和“char(',)”有什么不同?你可以使用lookback来去掉
$1
。换行符有什么关系?或者
(?avinash,是的,但是请忽略我的评论。我误解了你的正则表达式。我相信你想要
r=/(\d{1,2})(?=(?:\d{2})*\d{3}$/;s.gsub r,“{1}”)
。你可以使用lookback来删除
$1
。换行符是如何相关的?或者
(?avinash,是的,但是请忽略我的评论。我误解了你的正则表达式。我相信你想要
r=/(\d{1,2})(?=(?:\d{2})*\d{3}$/;s.gsub r,“{{1}”)