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;

沒有留言:

張貼留言

Basic Blind Chess的兩大問題

 Basic Blind Chess已經好久沒更新了, Windows版可以獲得最好的遊戲体驗, 但是Android版的,不只是比較舊, 它其實存在兩大問題: 1. 拿子移動時,顯示怪怪的,只顯示前幾個移動的殘影。 這個只有在最早的版本,沒有這個問題, 但是最早的版本實機測試時,...