今天和大家一起分享按鍵精靈和易語言分別在數組使用方面的種種分別和注意事項!
要求 : 定義一個文本型的變量, 把這個字符串中的每一個字符取出來放到數組內,然後刪除這個數組指定的下標,形成一個新數組!
分析: 如果單以是為了完成這道題目作為出發點來看,我會選擇使用易語言來完成,原因很簡單.核心庫(數組操作)里有直接封裝好的命令供我們使用,簡單方便. 如果以學習的角度作為出發點,那就要選擇使用按鍵精靈了,原因同樣簡單,因為按鍵精靈沒有提供相關的命令.我們能做的只有寫一個函數出來解決問題.
所有源碼均可在群內下載: 群號 31690552
下邊我們開始第一步:把字符串內的每一個字符取出來放到數組內
按鍵精靈代碼 如下圖:
定義一個文本型的變量a,分別使用len函數和mid函數來獲取這個字符串內的每一個字符,然後保存到arr數組內,這裡需要說明的是,如果是在循環內定義這個動態數組的話,一定記得使用 preserve 來保護一下這個數組之前賦的值,.如果不保護,那麼很遺憾,之前所有賦的值都是空值. 如下圖所示:
當然,我們也可以直接在循環外定義這個數組,那麼也就無須保護了,如下圖所示:
下邊我們來寫在易語言中的這一步代碼:
為了保持2者的可對比性,我這裡都使用了同樣的變量名, 這個時候易語言在數組操作方面的便捷性已經初露鋒芒. 在按鍵精靈中,我們實現這一步用的是給數組內的元素賦值的方法來實現. 如果你想要增加數組元素,那麼我們要重新定義數組的下標長度才可以,而易語言這時候就不需要了, 我們只需初始化數組的時候,把數組定義為動態數組,下標為0即可,
然後通過加入成員這條命令,數據將自動加入到數組的尾部,並通過重新自動自定義數組來增加數組的下標!
這裡使用了到全形的這條命令. 這是因為在易語言中封裝的Len函數和在按鍵精靈中封裝的Len函數細微差別所致.當然我們都知道,一個漢字占2個長度. 可是在按鍵精靈中做了處理,每位字符都只占一個長度.這樣就不用在考慮其他的因素了,個人感覺這一點比較爽.
當然,如果你一定要用類似按鍵精靈中給元素賦值的方法來實現, 我也無話可說,畢竟條條道路都通羅馬.只要能實現就好.
下圖為通向羅馬的另一條路:
所有源碼均可在群內下載: 群號 31690552
通過調試可以得出,這條道路同樣通向羅馬城. 至於大家走哪條路,完全憑個人喜歡而定.這裡不做評價
緊接著我們到了第二步 . 刪除數組指定下標形成一個新數組:
首先已按鍵精靈為例.因為在按鍵精靈中沒有直接刪除數組指定下標的命令,我們還需要自己寫函數,所以這裡就先以按鍵為先了哦. (排名不分先後)
直接上代碼圖.然後具體分析:
我們先不看其它.先看上圖數字所指幾處.第1處,function 說明它是一個函數,既然是函數,那麼它一定會有返回值,當然,也不是一定要有返回值. 如果你寫的函數沒有返回值,那麼我建議你還是用sub替代的好,(這裡不多做解釋) ,既然有返回值,那麼第一反應就是去看第3處所指向的代碼 . 從代碼可以看出,這個函數存在2種返回結果. 返回的都是數組 . 回過頭來看第2處. 我們可以知道這個函數有2個參數,第1個傳的是數組. 第2個傳的是整數型的數組下標. 建議大家查看函數的時候先看這3點,然後在具體查看其中代碼哦!
進入函數內部代碼區:
首先判斷了一下傳入要刪除這個數組的下標是否在範圍內.如果不在範圍內,直接返回了這個原數組, 也就是上圖代碼第19行所示!
如果傳入的第2個參數符合條件的話,這裡定義了一個亂碼組成的文本變量 . 並且把變量值賦給了我們要刪除的數組元素, 通過join函數把這個數組合併成一個字符串,然後我們在進入處理.
如下圖所示:
由上圖中可以得出如下信息:
在第6行調用了這個函數,傳入了2個參數,第一個為數組arr ,第二個為要刪除的數組下標,我這裡傳入的是下標2. 第13行的調試結果如紅框所示.已經把下標為2的數組元素替換成了指定的內容.
這時候我們在來看一下這個函數代碼圖:
如下圖:
上圖紅框所示區域內,通過了使用replace替換函數, left ,right 等函數 ,把這個字符串做了處理, 如果不做如上處理,將會出現以下3種情況, 如果所示:
通過對這個字符串的處理,把前後中間多餘的"-"符號去掉,這時候就已經可以對這個字符串進行分割處理,使之生成一個新數組,然後返回給這個函數了!
最後來看一下效果 :
大家是不是感覺有點小麻煩, 那下邊我們來看一下不麻煩的哦
易語言中實現這一步的代碼圖:
(這裡需要說一下的是:按鍵精靈中數組下標是從0開始,易語言中的數組下標是從1開始)
感謝:白小丁同學