2025年9月29日 星期一

Lua中的string s[index]並不像Python是String中的字元

 練習8 kyu的簡單題:

Exclamation marks series #2: Remove all exclamation marks from the end of sentence

題目是把字串最後連續的驚嘆號(!)去掉,但要注意,只去除最後連續的,

如果不在最後連續,不用去掉。

我的寫法一開始是:

local function remove_marks(s)
  local a = ''
  for i = #s, 1, -1 do
    if "!" ~= s[i] then
      a = string.sub(s, 1, i)
      return a
    end
  end
  return a
end

return remove_marks;

注意,這邊Lua跟Python的語法不一樣,

if "!" ~= s[i] then

除了Lua的不等於是~以外,

此時的s[i]是回傳nil,不是回傳s的第i個字元,

所以必需改寫如下:

local function remove_marks(s)
  local a = ''
  for i = #s, 1, -1 do
    ss = string.sub(s, i, i)
    if "!" ~= ss then
      a = string.sub(s, 1, i)
      return a
    end
  end
  return a
end

return remove_marks;

沒有留言:

張貼留言

Lua中的string s[index]並不像Python是String中的字元

 練習8 kyu的簡單題: Exclamation marks series #2: Remove all exclamation marks from the end of sentence 題目是把字串最後連續的驚嘆號(!)去掉,但要注意,只去除最後連續的, 如果不在最後連續...