【问题标题】:How to get lines count in string?如何获取字符串中的行数?
【发布时间】:2014-09-01 16:14:09
【问题描述】:

总的来说,我从 JSON 对中得到一个字符串,其中包含“\n”符号。例如,

“我可以看到大地如何滋养它的草,\n从粗糙的泥土中分离出细粒,\n用自己的残骸刺穿自己\n忍受它表面上的爬行昆虫。\n我可以看到像绿色波浪一样\n它升起土壤,膨胀起来,\n以及根如何穿透周围的覆盖物\n快乐地吸入天空中的空气。\n我可以看到光线如何照亮花朵,-\n将自己倾注到它们紧密的花蕾中!\n大地和大地草——继续生长!\n将群山淹没在绿色的海洋中......\n哦,年轻的运动的力量,\n植物的肌肉拉力!\n向地球、太阳和你敞开心扉, \n穿过灌木丛,呼吸清新的春天空气!”

这个字符串是一些图片的诗歌。

现在我需要根据文本长度调整 display.newText 对象的大小。

这是我的看法:

  1. 获取行数(“\n”个数+1,因为最后哪里没有“\n”)
  2. 在for循环中获取最长的行
  3. 设置display.newText对象的大小。可能正在使用 fontSize 来计算系数...

问题是:如何获取行数?

【问题讨论】:

    标签: string lua coronasdk


    【解决方案1】:

    要获取字符串中'\n'的数量,可以使用string.gsub,它用于字符串替换,但它也将匹配的数量作为第二个返回值返回。

    local count  = select(2, str:gsub('\n', '\n'))
    

    或类似的:

    local _, count = str:gsub('\n', '\n')
    

    【讨论】:

      【解决方案2】:

      这显然比@Yu Hao 的两个解决方案要快得多

      local function get_line_count(str)
          local lines = 1
          for i = 1, #str do
              local c = str:sub(i, i)
              if c == '\n' then lines = lines + 1 end
          end
      
          return lines
      end
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-05-31
        • 1970-01-01
        • 1970-01-01
        • 2011-05-13
        相关资源
        最近更新 更多