LibreOffice 7.2 žinynas
Pateikiamas vienmačių (vektorių) ir dvimačių masyvų (matricų) manipuliavimo ir transformavimo metodų rinkinys. Tai apima operacijų rinkinius, rūšiavimą, importavimą į tekstinius failus ir eksportavimą iš jų.
Šios paslaugos metodai gali būti naudojami tik vienmačiams ir dvimačiams masyvams, vienintelė išimtis yra CountDims metodas, kuriam tinka bet kokio matmenų skaičiaus masyvai.
Masyvo elementai gali būti bet kurio tipo reikšmės, įskaitant ir pačius masyvus.
Prieš naudojantis Array paslauga reikia įkelti ScriptForge biblioteką naudojantis:
GlobalScope.BasicLibraries.LoadLibrary("ScriptForge")
Įkėlus biblioteką bus sukurtas SF_Array objektas, kurį galima naudoti norint iškviesti metodus iš Array paslaugas.
Šie kodo fragmentai rodo įvairius būdus, kaip iškviesti metodus, esančius Array paslauga (pavyzdžiui, naudojamas metodas Pridėti):
SF_Array.Append(...)
Dim arr : arr = SF_Array
arr.Append(...)
Dim arr : arr = CreateScriptService("Array")
arr.Append(...)
Metodas CreateScriptService galimas tik įkėlus ScriptForge biblioteką.
Pirmasis daugumos metodų argumentas yra masyvo objektas. Jis visada perduodamas nuoroda ir lieka nepakitęs. Tokie metodai, kaip „Append“, „Prepend“ ir pan., grąžina naują masyvo objektą.
Įvedimo masyvo pabaigoje pridedami elementai, išvardyti kaip argumentai.
SF_Array.Append(Array_1D As Variant, arg0 As Variant, [arg1 As Variant], ...) As Variant
Array_1D : iš pradžių masyvas gali būti tuščias.
arg0, ... : sąrašas elementų, kurie bus pridedami prie „Array_1D“.
Sub Example_Append()
Dim a As Variant
a = SF_Array.Append(Array(1, 2, 3), 4, 5)
' (1, 2, 3, 4, 5)
End Sub
Dešinėje dviejų matmenų masyvo pusėje pridedamas naujas stulpelis. Gautas masyvas turi tuos pačius apatinius rėžius, kaip ir pradinio dviejų matmenų masyvo.
SF_Array.AppendColumn(Array_2D As Variant, New_Column As Variant) As Variant
Array_2D: esamas masyvas gali būti tuščias. Jei masyvas yra vienmatis, jis laikomas gauto dvimačio masyvo pirmuoju stulpeliu.
Naujas_stulpelis: vienmatis masyvas turi tiek elementų, kiek eilučių yra Array_2D masyve.
Sub Example_AppendColumn()
Dim a As Variant, b As variant
a = SF_Array.AppendColumn(Array(1, 2, 3), Array(4, 5, 6))
' ((1, 4), (2, 5), (3, 6))
b = SF_Array.AppendColumn(a, Array(7, 8, 9))
' ((1, 4, 7), (2, 5, 8), (3, 6, 9))
c = SF_Array.AppendColumn(Array(), Array(1, 2, 3))
' ∀ i ∈ {0 ≤ i ≤ 2} : b(0, i) ≡ i
End Sub
Dešinėje dviejų matmenų masyvo pusėje pridedamas naujas stulpelis. Gautas masyvas turi tuos pačius apatinius rėžius, kaip ir pradinio dviejų matmenų masyvo.
SF_Array.AppendRow(Array_2D As Variant, Row As Variant) As Variant
Array_2D: esamas masyvas gali būti tuščias. Jei masyvas yra vienmatis, jis laikomas gauto dvimačio masyvo pirmuoju stulpeliu.
Eilutė: Vienmatis masyvas turi tiek elementų, kiek yra Array_2D stulpelių.
Sub Example_AppendRow()
Dim a As Variant, b As variant
a = SF_Array.AppendRow(Array(1, 2, 3), Array(4, 5, 6))
' ((1, 2, 3), (4, 5, 6))
b = SF_Array..AppendRow(Array(), Array(1, 2, 3))
' ∀ i ∈ {0 ≤ i ≤ 2} : b(i, 0) ≡ i
End Sub
Patikrinkite, ar vienmačiame masyve yra tam tikras skaičius, tekstas ar data. Lyginant tekstą galima skirti didžiąsias ir mažąsias raides, arba ne.
Rikiuoti pradiniai masyvai turi būti užpildyti vienarūšiais duomenimis, kas reiškia, kad visi elementai turi būti to paties paprastojo tipo (elementai Tušti ir Nuliniai draudžiami).
Metodo rezultatas yra neapibrėžtas, kai masyvas skelbiamas surikiuotu, o iš tikrųjų nėra.
Dvejetainė paieška atliekama sutvarkius masyvą, priešingu atveju jis tiesiog nuskaitomas iš viršaus į apačią ir ignoruojami elementai Tušti ir Nuliniai.
SF_Array.Contains(Array_1D, ToFind As Variant, [CaseSensitive As Boolean], [SortOrder As String]) As Boolean
Array_1D : masyvas skaitymui.
ToFind : skaičius, data arba eilutė, kuriuos reikia rasti.
CaseSensitive : Tik lyginant eilutes, numatytoji reikšmė = False.
SortOrder : "ASC", "DESC" or "" (= nerikiuota, numatyta)
Sub Example_Contains()
Dim a As Variant
a = SF_Array.Contains(Array("A","B","c","D"), "C", SortOrder := "ASC") ' True
SF_Array.Contains(Array("A","B","c","D"), "C", CaseSensitive := True) ' False
End Sub
Store the content of a 2-columns array into a ScriptForge.Dictionary object.
The key will be extracted from the first column, the item from the second.
SF_Array.ConvertToDictionary(Array_2D As Variant) As Variant
Masyvas_1D: pirmame stulpelyje turi būti tik eilutės, kurių ilgis > 0, bet kuria tvarka.
Sub Example_ConvertToDictionary()
Dim a As Variant, b As Variant
a = SF_Array.AppendColumn(Array("a", "b", "c"), Array(1, 2, 3))
b = SF_Array.ConvertToDictionary(a)
MsgBox b.Item("c") ' 3
End Sub
Suskaičiuokite masyvo matmenų skaičių. Rezultatas gali būti didesnis nei du.
Jei argumentas nėra masyvas, tai grąžinama -1
Jei masyvas neinicijuotas, tai grąžina 0.
SF_Array.CountDims(Array_ND As Variant) As Integer
Array_ND : masyvas tikrinimui.
Sub Example_CountDims()
Dim a(1 To 10, -3 To 12, 5)
MsgBox SF_Array.CountDims(a) ' 3
End Sub
Sukurkite rinkinį, kaip nulinį masyvą, taikydami skirtumo operatorių dviem pradiniams masyvams. Rezultatai gaunami iš pirmojo masyvo, o ne iš antrojo.
Gautas masyvas išrikiuojamas didėjimo tvarka.
Abi pradiniai masyvai turi būti užpildyti vienodai, jų elementai turi būti to paties tipo paprastieji duomenys. Draudžiami elementai Tušti ir Null.
Lyginant tekstą didžiosios ir mažosios raidės gali būti skiriamos arba neskiriamos.
SF_Array.Difference(Array1_1D As Variant, Array2_1D As Variant[, CaseSensitive As Boolean]) As Variant
Array1_1D : Vienmatis nuorodų masyvas, kurio elementai tikrinami, ar reikia juos pašalinti.
Array2_1D : Vienmatis masyvas, kurio elementai atimami iš pirmojo pradinio masyvo.
CaseSensitive : Tik tiems masyvams, kurie užpildyti eilutėmis, numatyta = False.
Sub Example_Difference()
Dim a As Variant
a = SF_Array.Difference(Array("A", "C", "A", "b", "B"), Array("C", "Z", "b"), True)
' ("A", "B")
End Sub
Surašo visus masyvo elementus nuosekliai į teksto failą. Jei toks failas jau yra, bus užrašoma ant viršaus be perspėjimo.
SF_Array.ExportToTextFile(Array_1D As Variant, FileName As String, [Encoding As String]) As Boolean
Array_1D : Masyvas eksportavimui. Turi būti sudarytas tik iš eilučių.
Failo vardas: teksto failo, kuriame yra duomenys, pavadinimas. Pavadinimas nurodomas taip, kaip nurodyta dabartinės paslaugos SF_FileSystem savybėje FileNaming. Numatytasis = bet kuris (leidžiamas ir URL formatas, ir savosios operacinės sistemos formatas).
Kodavimas : Simbolių seka, kuri turi būti naudojama. Naudokite vieną iš čia išvardytų pavadinimų IANA character sets. Pastebėkime, kad „LibreOffice“ gali neįdiegti visų esamų simbolių rinkinių. Numatytasis parametras yra „UTF-8“.
Sub Example_ExportToTextFile()
SF_Array.ExportToTextFile(Array("A","B","C","D"), "C:\Temp\A short file.txt")
End Sub
Ištraukite iš dvimačio masyvo konkretų stulpelį kaip naują masyvą.
Šio masyvo apatinis LBound ir viršutinis UBound rėžiai yra tokie pat, kaip ir pirmojo pradinio masyvo.
SF_Array.ExtractColumn(Array_2D As Variant, ColumnIndex As Long) As Variant
Array_2D : Masyvas, iš kurio ištraukiama.
ColumnIndex : Stulpelio numeris, kurį reikia gauti, turi būti intervale [LBound, UBound].
Sub Example_ExtractColumn
'Sukuria 3x3 matricą: |1, 2, 3|
' |4, 5, 6|
' |7, 8, 9|
Dim mat as Variant, col as Variant
mat = SF_Array.AppendRow(Array(), Array(1, 2, 3))
mat = SF_Array.AppendRow(mat, Array(4, 5, 6))
mat = SF_Array.AppendRow(mat, Array(7, 8, 9))
'Ištraukia trečiąjį stulpelį: |3, 6, 9|
col = SF_Array.ExtractColumn(mat, 2)
End Sub
Ištraukite iš dvimačio masyvo konkretų stulpelį kaip naują masyvą.
Šio masyvo apatinis LBound ir viršutinis UBound rėžiai yra tokie pat, kaip ir pirmojo pradinio masyvo.
SF_Array.ExtractRow(Array_2D As Variant, RowIndex As Long) As Variant
Array_2D : Masyvas, iš kurio ištraukiama.
EilutėsIndeksas: Eilutės numeris, kurį reikia gauti, turi būti iš intervalo [ApRėžs, ViRėžis].
Sub Example_ExtractRow
'Sukuria 3x3 matricą: |1, 2, 3|
' |4, 5, 6|
' |7, 8, 9|
Dim mat as Variant, row as Variant
mat = SF_Array.AppendRow(Array(), Array(1, 2, 3))
mat = SF_Array.AppendRow(mat, Array(4, 5, 6))
mat = SF_Array.AppendRow(mat, Array(7, 8, 9))
'Ištraukia pirmąją eilutę: |1, 2, 3|
row = SF_Array.ExtractRow(mat, 0)
End Sub
Sudėkite visus atskirus masyvo elementus ir visus jo elementus į vieną naują masyvą. Tuščių dalinių masyvų nepaisoma. Daliniai masyvai, kurių matmenų skaičius yra didesnis nei vienas, nėra sugriaunami.
SF_Array.Flatten(Array_1D As Variant) As Variant
Array_1D : iš pradžių masyvas gali būti tuščias.
Sub Example_Flatten()
Dim a As Variant
a = SF_Array.Flatten(Array(Array(1, 2, 3), 4, 5))
' (1, 2, 3, 4, 5)
End Sub
Norėdami susieti vienmatį masyvų rinkinį į vieną vienmatį masyvą, galite naudoti Flatten metodą kartu su kitais metodais, pvz., Pridėti arba Prepend.
Kitas pavyzdys, kaip metodai Flatten ir Append gali sujungti tris masyvus.
Sub Concatenate_Example
'Šiam pavyzdžiui sukuria tris masyvus
Dim a as Variant, b as Variant, c as Variant
a = Array(1, 2, 3)
b = Array(4, 5)
c = Array(6, 7, 8, 9)
'Sujungia tris masyvus į vieną vienmatį masyvą
Dim arr as Variant
arr = SF_Array.Flatten(SF_Array.Append(a, b, c))
'(1, 2, 3, 4, 5, 6, 7, 8, 9)
End Sub
Importuokite kableliais atskirtus failo (CSV) duomenis. Kablelį galima pakeisti bet kuriuo simboliu.
Taikomas CSV formatas aprašytas dokumente IETF bendraisi formatas ir MIME tipas CSV failams.
Kiekvienoje failo eilutėje yra visas įrašas (eilučių skaidyti negalima).
Tačiau tokios sekos kaip \n, \t , ... lieka nepakeistos. Joms valdyti naudokite metodą SF_eilutė .Unescape ().
Metodas pateikia dviejų matmenų masyvą, kurio eilutės atitinka vieną faile perskaitytą įrašą, o stulpeliai – įrašo lauką. Stulpelių lauko tipų atitikimas netikrinamas. Geriausia identifikuojami skaičių ir datų tipai.
Jei eilutėje yra mažiau ar daugiau laukų nei pirmoje failo eilutėje, bus formuojama išimtis. Tačiau tuščius eilutės tiesiog nepaisomos. Jei failo dydis viršija elementų skaičiaus limitą (žr. kodo viduje), įspėjima ir masyvas sutrumpinamas.
SF_Array.ImportFromCSVFile(FileName As String, [Delimiter As String], [DateFormat As String]) As Variant
Failo vardas: teksto failo, kuriame yra duomenys, pavadinimas. Pavadinimas nurodomas taip, kaip nurodyta dabartinės paslaugos SF_FileSystem savybėje FileNaming. Numatytasis = bet kuris (leidžiamas ir URL formatas, ir savosios operacinės sistemos formatas).
Skirtukas: Vienas simbolis, dažniausiai kablelis, kabliataškis arba tabuliacijos ženklas. Numatyta = ",".
DatosFormatas: specialus mechanizmas tvarko datas, kai DatosFormatos yra „MMMM-MM-DD“, „DD-MM-YYYY“ arba „MM-DD-YYYY“. Brūkšnelis (-) gali būti pakeistas tašku (.), pasviruoju brūkšniu (/) arba tarpu. Kiti datos formatai bus ignoruojami. Datos, kurių numatytasis formatas yra "", laikomos įprastu tekstu.
Duotas CSV failas:
Name,DateOfBirth,Address,City
Anna,2002/03/31,"Rue de l'église, 21",Toulouse
Fred,1998/05/04,"Rue Albert Einstein, 113A",Carcassonne
Sub Example_ImportFromCSVFile()
Dim a As Variant
a = SF_Array.ImportFromCSVFile("C:\Temp\myFile.csv", DateFormat := "YYYY/MM/DD")
MsgBox a(0, 3) ' City
MsgBox TypeName(a(1, 2)) ' Date
MsgBox a(2, 2) ' Rue Albert Einstein, 113A
End Sub
Vienmačiame masyve ieškokite skaičiaus, eilutės ar datos. Lyginant tekstą didžiosios ir mažosios raidės gali būti skiriamos.
Jei masyvas yra surikiuotas, jis turi būti užpildytas vienos rūšies duomenimis, o tai reiškia, kad visi elementai turi būti to paties paprastojo tipo (draudžiama naudoti Empty ir Null).
Metodo rezultatas yra neapibrėžtas, kai masyvas skelbimas surikiuotas, o iš tikrųjų taip nėra.
Dvejetainė paieška atliekama surikiuotuose masyvuose. Kitu atveju masyvai paprasčiausiai nuskaitomi iš viršaus į apačią ir ignoruojami elementai Empty ir Null.
Jei paieška nebuvo sėkminga, metodas grąžina ApRėžis (įvesties masyvas) - 1.
SF_Array.IndexOf(Array_1D, ToFind As Variant, [CaseSensitive As Boolean], [SortOrder As String]) As Long
Array_1D: masyvas skaitymui.
ToFind: skaičius, data arba eilutė, kuriuos reikia rasti.
CaseSensitive : Tik lyginant eilutes, numatytoji reikšmė = False.
SortOrder : "ASC", "DESC" arba "" (= nerikiuota, numatyta)
Sub Example_IndexOf()
MsgBox SF_Array.IndexOf(Array("A","B","c","D"), "C", SortOrder := "ASC") ' 2
MsgBox SF_Array.IndexOf(Array("A","B","c","D"), "C", CaseSensitive := True) ' -1
End Sub
Prieš nurodytą įvesties masyvo indeksą įterpkite elementus, nurodytus kaip argumentus.
Argumentai įterpiami aklai. Kiekvienas iš jų gali būti bet kokio paprastojo tipo duomuo arba masyvo dalis.
SF_Array.Insert(Array_1D As Variant, Before As Long, arg0 As Variant, [arg1 As Variant], ...) As Variant
Array_1D: iš pradžių masyvas gali būti tuščias.
Prieš: indeksas, prieš kurį reikia įterpti; turi būti iš intervalo [ApRėžis, ViRėžis + 1].
arg0, ...: elementų, kuriuos reikia įterpti, sąrašas Array_1D.
Sub Example_Insert()
Dim a As Variant
a = SF_Array.Insert(Array(1, 2, 3), 2, "a", "b")
' (1, 2, "a", "b", 3)
End Sub
Į surikiuotą masyvą įterpkite naują elementą.
Masyvas turi būti užpildytas vienos rūšies duomenimis, tai reiškia, kad visi elementai turi būti to paties paprastojo tipo duomenys. Elementai
Empty ir Null draudžiami.
SF_Array.InsertSorted(Array_1D As Variant, Item As Variant, SortOrder As String, CaseSensitive As Boolean) As Variant
Array_1D: Masyvas rikiavimui.
Elementas : Paprastojo tipo reikšmė įterpimui, to paties tipo kaip ir esami masyvo elementai.
RikiavimoTvarka : "ASC" (numatyta) arba "DESC".
SkirtiRaidžiųLygį: Tik lyginant eilutes, numatytoji reikšmė = False.
Sub Example_InsertSorted()
Dim a As Variant
a = SF_Array.InsertSorted(Array("A", "C", "a", "b"), "B", CaseSensitive := True)
' ("A", "B", "C", "a", "b")
End Sub
Sukurkite rinkinį, kaip nulinį masyvą, taikydami sankirtos aibės operatorių dviem pradiniams masyvams. Rezultatai įrašomi į abu masyvus.
Gautas masyvas rikiuojamas didėjimo tvarka.
Abi pradiniai masyvai turi būti užpildyti vienos rūšies duomenimis, kitaip tariant, visi elementai turi būti to paties paprastojo tipo duomenys. Draudžiami elementai yra Empty ir Null.
Lyginant tekstą didžiosios ir mažosios raidės gali būti skiriamos arba ne.
SF_Array.Intersection(Array1_1D As Variant, Array2_1D As Variant[, CaseSensitive As Boolean]) As Variant
Array1_1D: Pirmasis pradinis masyvas.
Array2_1D: Antrasis pradinis masyvas.
SkirtiRaidžiųLygį: Tik tiems masyvams, kurie užpildyti tekstiniais elementai, numatyta = False.
Sub Example_Intersection()
Dim a As Variant
a = SF_Array.Intersection(Array("A", "C", "A", "b", "B"), Array("C", "Z", "b"), True)
' ("C", "b")
End Sub
Sujunkite dviejų matmenų masyvo elementus naudodami du skirtukus: vienas skirtas stulpeliams, kitas - eilutėms.
SF_Array.Join2D(Array_2D As Variant, ColumnDelimiter As String, RowDelimiter As String, Quote As Boolean) As String
Array_2D: Kiekvienas elementas turi būti tekstas, skaičius, data arba loginė reikšmė.
Datos transformuojamos į MMMM-MM-DD hh: mm: ss formatą.
Neteisingi elementai pakeičiami nulio ilgio eilute.
StulpeliųSkirtukas : Skiria kiekvieną stulpelį (numatyta = Tab/Chr(9)).
EilučiųSkirtukas: skiria kiekvieną eilutę (numatyta = LineFeed/Chr(10))
Kabutės: jei True, tai apgaubkite eilutes dvigubomis kabutėmis. Numatytoji būsena yra False.
Sub Example_Join2D()
- | 1, 2, "A", [2020-02-29], 5 |
- SF_Array.Join_2D(| 6, 7, "this is a string", 9, 10 |, ",", "/")
- ' "1,2,A,2020-02-29 00:00:00,5/6,7,this is a string,9,10"
End Sub
Pridėkite įvesties masyvo pradžioje elementus, nurodytus kaip argumentai.
SF_Array.Prepend(Array_1D As Variant, arg0 As Variant, [arg1 As Variant], ...) As Variant
Array_1D: iš pradžių masyvas gali būti tuščias.
arg0, ...: pridedamų elementų sąrašas Array_1D.
Sub Example_Prepend()
Dim a As Variant
a = SF_Array.Prepend(Array(1, 2, 3), 4, 5)
' (4, 5, 1, 2, 3)
End Sub
Kairėje dviejų matmenų masyvo pusėje pridedamas naujas stulpelis. Gautas masyvas turi tuos pačius apatinius rėžius, kaip ir pradinis dviejų matmenų masyvas.
SF_Array.PrependColumn(Array_2D As Variant, Column As Variant) As Variant
Array_2D: esamas masyvas gali būti tuščias. Jei masyvas yra vienmatis, jis laikomas gauto dvimačio masyvo paskutiniu stulpeliu.
Stulpelis: vienmatis masyvas turi tiek elementų, kiek eilučių yra Array_2D masyve.
Sub Example_PrependColumn()
Dim a As Variant, b As variant
a = SF_Array.PrependColumn(Array(1, 2, 3), Array(4, 5, 6))
' ((4, 1), (5, 2), (6, 3))
b = SF_Array.PrependColumn(Array(), Array(1, 2, 3))
' ∀ i ∈ {0 ≤ i ≤ 2} : b(0, i) ≡ i
End Sub
Viršuje dviejų matmenų masyvo pridedama eilutė. Gautas masyvas turi tuos pačius apatinius rėžius, kaip ir pradinis dviejų matmenų masyvas.
SF_Array.PrependRow(Array_2D As Variant, Row As Variant) As Variant
Array_2D: esamas masyvas gali būti tuščias. Jei masyvas yra vienmatis, jis laikomas gauto dvimačio masyvo paskutine eilute.
Stulpelis: vienmatis masyvas turi tiek elementų, kiek eilučių yra Array_2D masyve.
Sub Example_PrependRow()
Dim a As Variant, b As variant
a = SF_Array.PrependRow(Array(1, 2, 3), Array(4, 5, 6))
' ((4, 5, 6), (1, 2, 3))
b = SF_Array.PrependRow(Array(), Array(1, 2, 3))
' ∀ i ∈ {0 ≤ i ≤ 2} : b(i, 0) ≡ i
End Sub
Inicijuokite naują skaitinį nulinių reikšmių masyvą.
SF_Array.RangeInit(From As [number], UpTo As [number] [, ByStep As [number]]) As Variant
Nuo: pirmoji elemento reikšmė.
Iki: Paskutinis elementas neturi viršyti iki.
Žingsnis: Skirtumas tarp dviejų vienas po kito einančių elementų (numatytoji reikšmė = 1).
Sub Example_RangeInit()
Dim a As Variant
a = SF_Array.RangeInit(10, 1, -1)
' (10, 9, 8, 7, 6, 5, 4, 3, 2, 1)
End Sub
Grąžinkite atvirkštinį vienmatį pradinį masyvą.
SF_Array.Reverse(Array_1D As Variant) As Variant
Array_1D: atvirkštinis masyvas.
Sub Example_Reverse()
Dim a As Variant
a = SF_Array.Reverse(Array("a", 2, 3, 4))
' (4, 3, 2, "a")
End Sub
Grąžinama atsitiktinė vienmačio masyvo permutacija.
SF_Array.Shuffle(Array_1D As Variant) As Variant
Array_1D: masyvas permutacijai.
Sub Example_Shuffle()
Dim a As Variant
a = SF_Array.Shuffle(Array(1, 2, 3, 4))
' Nenuspėjama
End Sub
Grąžinamas vienmačio masyvo poaibis.
SF_Array.Slice(Array_1D As Variant, From As Long, [UpTo As Long]) As Variant
Array_1D: masyvas postūmiui.
Nuo: Masyvo poaibio ištrauktas apatinis rėžis Array_1D (Nuo įskaitytinai)
Iki: Masyvo poaibio ištrauktas viršutinis rėžis Array_1D (Iki imtinai). Numatyta = viršutinis masyvo Array_1D rėžis. Jei Iki < Nuo, tai grąžinamas tuščias masyvas.
Sub Example_Slice()
Dim a As Variant
a = SF_Array.Slice(Array(1, 2, 3, 4, 5), 1, 3) ' (2, 3, 4)
End Sub
Reikia surikiuoti vienmatį masyvą didėjimo arba mažėjimo tvarka. Lyginant tekstus didžiosios ir mažosios raidės arba skiriamos, arba ne.
Masyvas turi būti užpildytas vienodo tipo duomenimis, t. y. elementai turi būti to paties paprastojo tipo reikšmės. Leistini elementai
Empty ir Null. Paprastai Empty < už Null < už bet kurią kitą skaliarinę reikšmę.
SF_Array.Sort(Array_1D As Variant, SortOrder As String, CaseSensitive As Boolean) As Variant
Array_1D: masyvas rikiavimui.
RikiavimoTvarka : "ASC" (numatyta) arba "DESC".
SkirtiRaidžiųLygį: Tik lyginant eilutes, numatytoji reikšmė = False.
Sub Example_Sort()
Dim a As Variant
a = SF_Array.Sort(Array("a", "A", "b", "B", "C"), CaseSensitive := True)
' ("A", "B", "C", "a", "b")
End Sub
Return a permutation of the columns of a two dimension array, sorted on the values of a given row.
The row must be filled homogeneously, which means that all items must be scalars of the same type.
Empty and Null items are allowed. Conventionally Empty < Null < any other scalar value.
SF_Array.SortColumns(Array_1D As Variant, RowIndex As Long, SortOrder As String, CaseSensitive As Boolean) As Variant
Array_1D : The array to sort.
RowIndex : The index of the row to sort the columns on.
SortOrder : "ASC" (default) or "DESC".
CaseSensitive : Only for string comparisons, default = False.
Sub Example_SortColumns()
- | 5, 7, 3 | ' | 7, 5, 3 |
- SF_Array.SortColumns(| 1, 9, 5 |, 2, "ASC") ' | 9, 1, 5 |
- | 6, 1, 8 | ' | 1, 6, 8 |
End Sub
Return a permutation of the rows of a two dimension array, sorted on the values of a given column.
The column must be filled homogeneously, therefore all items must be scalars of the same type.
Empty and Null items are allowed. Conventionally Empty < Null < any other scalar value.
SF_Array.SortRows(Array_1D As Variant, ColumnIndex As Long, SortOrder As String, CaseSensitive As Boolean) As Variant
Array_1D : The array to sort.
RowIndex : The index of the column to sort the rows on.
SortOrder : "ASC" (default) or "DESC".
CaseSensitive : Only for string comparisons, default = False.
Sub Example_SortRows()
- | 5, 7, 3 | ' | 1, 9, 5 |
- SF_Array.SortRows(| 1, 9, 5 |, 2, "ASC") ' | 5, 7, 3 |
- | 6, 1, 8 | ' | 6, 1, 8 |
End Sub
Swap rows and columns in a two dimension array.
SF_Array.Transpose(Array_2D As Variant) As Variant
Array_2D : The array to transpose.
Sub Example_Transpose()
- | 1, 2 | ' | 1, 3, 5 |
- SF_Array.Transpose(| 3, 4 |) ' | 2, 4, 6 |
- | 5, 6 |
End Sub
Remove from a one dimension array all Null, Empty and zero-length entries.
String items are trimmed with LibreOffice Basic Trim() function.
SF_Array.TrimArray(Array_1D As Variant) As Variant
Array_1D : The array to scan.
Sub Example_TrimArray()
Dim a As Variant
a = SF_Array.TrimArray(Array("A","B",Null," D "))
' ("A","B","D")
End Sub
Build a set, as a zero-based array, by applying the union operator on the two input arrays. Resulting items originate from both arrays.
The resulting array is sorted in ascending order.
Both input arrays must be filled homogeneously, their items must be scalars of the same type. Empty and Null items are forbidden.
Text comparison can be case sensitive or not.
SF_Array.Union(Array1_1D As Variant, Array2_1D As Variant[, CaseSensitive As Boolean]) As Variant
Array1_1D : The first input array.
Array2_1D : The second input array.
CaseSensitive : Only if the arrays are populated with strings, default = False.
Sub Example_Union()
Dim a As Variant
a = SF_Array.Union(Array("A", "C", "A", "b", "B"), Array("C", "Z", "b"), True)
' ("A", "B", "C", "Z", "b")
End Sub
Build a set of unique values derived from the input array.
The input array must be filled homogeneously, its items must be scalars of the same type. Empty and Null items are forbidden.
Text comparison can be case sensitive or not.
SF_Array.Unique(Array_1D As Variant, CaseSensitive As Boolean]) As Variant
Array_1D : The input array.
CaseSensitive : Only if the array is populated with texts, default = False.
Sub Example_Unique()
Dim a As Variant
a = SF_Array.Unique(Array("A", "C", "A", "b", "B"), CaseSensitive := True)
' ("A", "B", "C", "b")
End Sub