Pomoč LibreOfficeDev 26.8
Ponuja zbirko metod za ravnanje z in preoblikovanje enodimenzionalnih polj (vektorjev) in dvodimenzionalnih polj (matrik). To vključuje operacije nad množicami, razvrščanje ter uvažanje in izvažanje besedilnih datotek.
Polj z več kot dvema dimenzijama ni možno uporabljati z metodami te storitve, edina izjema je metoda CountDims, ki sprejema polja poljubnih dimenzij.
Elementi polja so lahko vrednosti poljubne vrste, vključno s (pod)polji.
Enodimenzionalna polja, ki vsebujejo samo enodimenzionalna podpolja, so v nadaljevanju poimenovana podatkovna polja. Posebej primerna so za izmenjavo tabuliranih podatkov s skripti Python in delovnimi listi Calc.
Pred uporabo storitve Array je potrebno naložiti knjižnico ScriptForge:
GlobalScope.BasicLibraries.loadLibrary("ScriptForge")
Z nalaganjem knjižnice ustvarite predmet SF_Array, ki ga lahko uporabite za klicanje metod v storitvi Array.
Naslednji odlomki kode kažejo različne načina klica metod storitve Array (metoda Append služi kot primer):
Dim arr : arr = Array(1, 2, 3)
arr = SF_Array.Append(arr, 4)
Dim arr : arr = Array(1, 2, 3)
Dim svc : svc = SF_Array
arr = svc.Append(arr, 4)
Dim arr : arr = Array(1, 2, 3)
Dim svc : svc = CreateScriptService("Array")
arr = svc.Append(arr, 4)
Python ima vgrajeno podporo za sezname in n-terice, zato je večina metod iz storitve Array na voljo le za skripte Basic. Edina izjema je ImportFromCSVFile, ki je podprta tako v Basicu kot Pythonu.
Prvi argument večine metod je predmet polja, ki bo obravnavan. Vedno je podan s sklicem in se ne spreminja. Metode, kot so Append, Prepend itn. po izvedbi vrnejo nov predmet polja.
Doda elemente, navedene kot argumente, na konec vhodnega polja.
svc.Append(array_1d: any[0..*], arg0: any, [arg1: any] ...): any[0..*]
array_1d: predobstoječa matrika, lahko je prazna.
arg0, arg1, ...: seznam elementov, ki jih želite pripeti polju array_1d.
Dim a As Variant
a = SF_Array.Append(Array(1, 2, 3), 4, 5)
' (1, 2, 3, 4, 5)
Doda nov stolpec na desno stran dvodimenzionalnega polja. Končno polje ima enako spodnjo mejo kot začetno dvodimenzionalno polje.
svc.AppendColumn(array_2d: any[0..*, 0..*], column: any[0..*]): any[0..*, 0..*]
array_2d: predobstoječa matrika, lahko je prazna. Če ima to polje samo eno dimenzijo, velja kot prvi stolpec rezultatskega dvodimenzionalnega polja.
column: 1-dimenzionalno polje s toliko elementi, kolikor je vrstic v array_2d.
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
Doda novo vrstico na dno dvodimenzionalnega polja. Končno polje ima enako spodnjo mejo kot začetno dvodimenzionalno polje.
svc.AppendRow(array_2d: any[0..*, 0..*], row: any[0..*]): any[0..*, 0..*])
array_2d: predobstoječa matrika, lahko je prazna. Če je to polje enodimenzionalno, šteje za prvo vrstico ciljnega dvodimenzionalnega polja.
row: 1-dimenzionalno polje s toliko elementi, kolikor je stolpcev v array_2d.
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
Preveri, če enodimenzionalno polje vsebuje določeno število, besedilo ali datum. Primerjava besedil lahko razlikuje med velikimi in malimi črkami ali pa ne.
Vhodna razvrščena polja morajo biti zapolnjena homogeno, kar pomeni, da morajo biti vsi njihovi elementi skalarji iste vrste (elementa Empty in Null sta prepovedana).
Rezultat metode je nepredvidljiv, če je polje razglašeno za razvrščeno, pa dejansko ni.
Dvojiško iskanje se izvee, ko je polje razvrščeno, sicer se preprosto preišče od vrha do dna, elementi Empty in Null pa so prezrti.
svc.Contains(array_1d: any[0..*], tofind: any, casesensitive: bool = False, sortorder: str = ""): bool
array_1d: polje za pregled.
tofind: iskano število, datum ali niz.
casesensitive: razločevanje med malimi in velikimi črkami, le za primerjavo nizov (privzeta vrednost je False).
sortorder: vrstni red razvrščanja, možne vrednosti so "ASC" (naraščajoče), "DESC" (padajoče) in "" (nerazvrščeno, privzeta vrednost).
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
Pretvorite podatkovno polje v polje Basic.
Podatkovno polje je polje podpolj. Na zahtevo so posamezni izhodni elementi reducirani na nize ali samo doubles/pare/števila s plavajočo vejico z dvojno natančnostjo.
Metoda vrne skalar, ničelno osnovano enodimenzionalno polje ali ničelno osnovano dvodimenzionalno polje.
Število stolpcev v rezultatnem dvodimenzionalnem polju je enako številu elementov v prvem podpolju. Če so naslednja podpolja različne velikosti, bodo naslednje vrstice komplementirane z argumentom fillvalue ali porezane.
svc.ConvertFromDataArray(dataarray: any[any[0..*], ...], isrange: bool = False, fillvalue: str = ''): any[0..*, 0..*]
dataarray: polje podpolj. Polja in podpolja morajo biti na ničelni osnovi.
Tipično je podatkovno polje izhod
skripta v Pyhonu, ki vrne n-terico n-teric
metoda getDataArray() iz vmesnika com.sun.star.sheet.XCellRangeData
isrange: če je True (privzeta vrednost je False), se vsi elementi pretvorijo v nize ali doubles/pare/števila plavajoče vejice z dvojno natančnostjo.
fillvalue: kako nadomestiti manjkajoče elemente. Privzeta vrednost je prazen niz.
Dim dataarray As Variant, array2D As Variant
dataarray = Array(Array("Col1", "Col2", "Col3"), Array(10, 20, 30))
array2D = SF_Array.ConvertFromDataArray(dataarray)
MsgBox array2D(1, 2) ' 30
Ustvarite podatkovno polje iz skalarja, enodimenzionalnega polja ali dvodimenzionalnega polja.
Podatkovno polje je ničelno osnovano polje ničelno zasnovanih podpolj. Na zahtevo so posamezni izhodni elementi reducirani na zgolj nize ali števila z dvojno natančnostjo.
Vrnjeno podatkovno polje je običajno uporabljeno kot
n-terica (pod)n-teric, podanih skriptu Python
argument metode setDataArray() iz vmesnika com.sun.star.sheet.XCellRangeData
svc.ConvertToDataArray(data: any[0..*, 0..*], isrange: bool = False, rows: int = 0, columns: int = 0): any[any[0..*], ...]
data: vhodni skalar, 1- ali 2-dimenzionalna matrika.
isrange: če je True (privzeta vrednost je False), so elementi polja shranjeni samo kot (morda prazni) nizi ali pari/števila plavajoče vejice z dvojno natančnostjo v podatkovnem polju.
rows, columns: število vrstic ali stolpcev vrnjenega podatkovnega polja. Če presegajo meje data, se zapolnijo z nizi ničelne dolžine. Če je rows = 1 in je vhodno polje vektor, se podatkovno polje poravna vodoravno (privzeto so vektorji poravnani navpično). Če manjka, velikost izhoda določa vhodno polje.
Dim data As Variant, dataarray As Variant
data = Array(1, 2, 3)
data = SF_Array.AppendRow(data, Array(4, 5, 6))
dataarray = SF_Array.ConvertToDataArray(data)
MsgBox dataarray(1)(2) ' 6
Shrani vsebino dvostolpčnega polja v predmet ScriptForge.Dictionary.
Ključ bo izluščen iz prvega stolpca, element iz drugega.
svc.ConvertToDictionary(array_2d: any[0..*, 0..1]): obj
array_2d: podatki, ki bodo pretvorjeni v predmet ScriptForge.Dictionary.
Prvi stolpec mora vsebovati izključno nize dolžine večje od nič, v poljubnem zaporedju. Te vrednosti bodo uporabljene kot oznake v slovarju.
Drugi stolpec vsebuje podatke, ki bodo povezani z ustrezno oznako v slovarju.
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
Ustvarite vsebino veljavnega obsega celic iz skalarja, enodimenzionalnega polja, dvodimenzionalnega polja ali podatkovnega polja (podatkovno polje je ničelno osnovano polje ničelno osnovanih podpolj). Nižje meje polj se ohranijo v izhodu.
Posamezni elementi so vedno reducirani na nize ali pare/števila plavajoče vejice z dvojno natančnostjo, vključno z logičnimi vrednostmi in datumi.
Vrnjeni skalar ali dvodimenzionalno polje je veljaven argument metode session.ExecuteCalcFunction(). To je še posebej uporabno v kontekstu [kompleksnih] matričnih funkcij.
svc.ConvertToRange(data: any[0..*, 0..*], direction: str = 'V' | 'H'): any[0..*, 0..*]
data: vhodni skalar, eno-, dvodimenzionalno polje ali podatkovno polje.
direction: poravnava obsega, ko gre za vektor, možne vrednosti so "V" (navpično, privzeto) ali "H" (vodoravno).
Dim session As Variant : session = CreateScriptService"Session")
Dim matrix As Variant, result As Variant
matrix = Array(-1, 2, 3)
matrix = SF_Array.AppendRow(matrix, Array(4, -5, 6))
matrix = SF_Array.AppendRow(matrix, Array(7, 8, -9))
result = session.ExecuteCalcFunction("ABS", SF_Array.ConvertToRange(matrix))
MsgBox result(2)(2) ' 9 - result is a data array
Ustvari kopijo eno- ali dvodimenzionalnega polja.
svc.Copy(array_nd: any[0..*]): any[0..*]
svc.Copy(array_nd: any[0..*, 0..*]): any[0..*, 0..*]
array_nd: eno- ali dvodimenzionalno polje, ki ga želite kopirati.
Enostavna dodelitev predmeta Array kopira njegov sklic namesto ustvarjanja kopije vsebine predmeta. Glejte spodnji primer:
Dim a as Variant, b as Variant
a = Array(1, 2, 3)
' Spodnja dodelitev se opravi s sklicem
b = a
' Zato sprememba vrednosti v "b" povzroči spremembo tudi v "a"
b(0) = 10
MsgBox a(0) ' 10
Z rabo metode Copy se izdela kopija celotnega predmeta Array. V spodnjem primeru sta a in b različna predmeta; sprememba vrednosti v b ne vpliva na vrednosti v a.
Dim a as Variant, b as Variant
a = Array(1, 2, 3)
' Ustvari kopijo "a" z metodo "Copy"
b = SF_Array.Copy(a)
b(0) = 10
MsgBox a(0) ' 1
Preštej število dimenzij matrike. Rezultat je lahko večji od dva.
Če argument ni matrika, vrne -1.
Če matrika ni inicializirana, vrne 0.
svc.CountDims(array_nd: any): int
array_nd: polje za preučevanje.
Dim a(1 To 10, -3 To 12, 5)
MsgBox SF_Array.CountDims(a) ' 3
Tvori množico, kot ničelno polje, tako da izvede operacijo razlike na obeh vhodnih poljih. Elementi rezultata izvirajo iz prvega polja, ne iz drugega.
Polje rezultata je razvrščeno v naraščajočem vrstnem redu.
Obe vhodni polji morata biti homogeno zapolnjeni, kar pomeni, da morajo biti vsi njuni elementi skalarji iste vrste. Elementa Empty in Null sta prepovedana.
Primerjava besedil lahko razlikuje med velikimi in malimi črkami ali pa ne.
svc.Difference(array1_1d: any[0..*], array2_1d: any[0..*], casesensitive: bool = False): any[0..*]
array1_1d: enodimenzionalno referenčno polje, katerega elemente pregledujemo za odstranitev.
array2_1d: enodimenzionalno polje, katerega elementi se odštevajo od prvega vhodnega polja.
casesensitive: ta argument bo upoštevan samo takrat, ko so polja izpolnjena z nizi (privzeta vrednost je False).
Dim a As Variant
a = SF_Array.Difference(Array("A", "C", "A", "b", "B"), Array("C", "Z", "b"), True)
' ("A", "B")
Zapiši vse elemente polja zaporedno v besedilno datoteko. Če datoteka že obstaja, bo prepisana brez opozorila.
svc.ExportToTextFile(array_1d: any[0..*], filename: str, [encoding: str]): bool
array_1d: matrika za izvoz. Vsebovati mora zgolj nize.
filename: ime besedilne datoteke, kamor želite pisati podatke. Ime mora biti izraženo v skladu s trenutno lastnostjo FileNaming storitve SF_FileSystem.
encoding: nabor znakov, ki naj bo uporabljen. Uporabi eno od imen, navedenih v naborih znakov IANA (v angl. jeziku). Upoštevajte, da LibreOfficeDev morda ne podpira vseh obstoječih naborov znakov (privzeta vrednost je »UTF-8«).
SF_Array.ExportToTextFile(Array("A","B","C","D"), "C:\Temp\A short file.txt")
Izveleč določen stolpec iz dvodimenzionalnega polja kot novo polje.
Njeni spodnja meja LBound in zgornja meja UBound sta identični mejam prve razsežnosti vhodnega polja.
svc.ExtractColumn(array_2d: any[0..*, 0..*], columnindex: int): any[0..*, 0..*]
array_2d: polje, iz katerega želite izvleči podatke.
columnindex: številka stolpca, ki ga želite izvleči – mora biti v intervalu [LBound, UBound].
'Ustvari polje 3x3: |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))
'Izvleče tretji stolpec: |3, 6, 9|
col = SF_Array.ExtractColumn(mat, 2)
Izloči določeno vrstico iz dvodimenzionalnega polja kot novo polje.
Njeni spodnja meja LBound in zgornja meja UBound sta identični mejam druge razsežnosti vhodnega polja.
svc.ExtractRow(array_2d: any[0..*, 0..*], rowindex: int): any[0..*, 0..*]
array_2d: polje, iz katerega želite izvleči podatke.
rowindex: številka vrstice, ki jo želite izvleči – mora biti v intervalu [LBound, UBound].
'Ustvari polje 3x3: |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))
'Izvleče prvo vrstico: |1, 2, 3|
row = SF_Array.ExtractRow(mat, 0)
Zloži vse posamezne elemente polja in vse elemente njenih podpolj v eno samo novo polje brez podpolj. Prazna podpolja so prezrta in podpolja več kot ene dimenzije niso sploščena.
svc.Flatten(array_1d: any[0..*]): any[0..*]
array_1d: predobstoječa matrika, lahko je prazna.
Dim a As Variant
a = SF_Array.Flatten(Array(Array(1, 2, 3), 4, 5))
' (1, 2, 3, 4, 5)
Metodo Flatten lahko uporabite z drugimi metodami, kot sta Append in Prepend, da spojite množico enodimenzionalnih polj v eno samo enodimenzionalno polje.
Sledi primer, kako lahko kombinirate metodi Flatten in Append, da spojite tri polja.
'Ustvari tri polja za ta primer
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)
'Poveže oz. spoji tri polja v eno samo enodimenzionalno polje
Dim arr as Variant
arr = SF_Array.Flatten(SF_Array.Append(a, b, c))
'(1, 2, 3, 4, 5, 6, 7, 8, 9)
Uvozi podatke, vsebovane v datoteki, ločeni z vejicami (CSV). Vejico lahko zamenja poljuben znak.
Uporabljeni zapis CSV je podrobno opisan na strani IETF Common Format and MIME Type for CSV Files (v angl.).
Vsaka vrstica v datoteki vsebuje poln zapis (deljenje vrstic ni dovoljeno).
Zaporedja \n, \t itn. pa ostanejo nespremenjena. Uporabite metodo SF_String.Unescape() za njihovo upravljanje.
Metoda vrne dvodimenzionalno polje, katerega vrstice ustrezajo posameznim zapisom, prebranim iz datoteke, in katerega stolpci ustrezajo poljem v zapisih. Pri tem se ne izvede preverjanje o koherentnosti vrst polj po stolpcih. Opravljena bo presoja za identifikacijo številskih in datumskih vrst.
Če vrstica vsebuje manj ali več polj kot prva vrstica v datoteki, prikliče izjemo. Prazne vrstice pa so enostavno prezrte. Če velikost datoteke presega mejno število elementov (glejte kodo), javi napako in polje je okrajšano.
svc.ImportFromCSVFile(filename: str, delimiter: str = ',', dateformat: str = ''): any[0..*]
filename: ime besedilne datoteke, ki vsebuje podatke. Ime je izraženo skladno s trenutno lastnostjo FileNaming storitve SF_FileSystem.
delimiter: posamezen znak kot ločilo, običajno vejica, podpičje ali tabulator (privzeto je ",").
dateformat: datume obravnava poseben mehanizem, ko je oblika datuma dateformat ena od vrednosti "YYYY-MM-DD", "DD-MM-YYYY" ali "MM-DD-YYYY". Pomišljaj (-) lahko zamenjate s piko (.), poševnico (/) ali presledkom. Druge oblike datuma bodo prezrte. Datumi s privzeto vrednostjo praznega niza ("") veljajo za navadno besedilo.
Vzemimo besedilno datoteko »myFile.csv« z naslednjo vsebino:
Ime,DatumRojstva,Naslov,Kraj
Anna,2002/03/31,"Rue de l'église, 21",Toulouse
Fred,1998/05/04,"Rue Albert Einstein, 113A",Carcassonne
Spodnja primera v Basicu in Pythonu prebereta vsebino datoteko CSV v predmet Array.
Dim arr As Variant
arr = SF_Array.ImportFromCSVFile("C:\Temp\mojaDatoteka.csv", DateFormat := "YYYY/MM/DD")
MsgBox arr(0, 3) ' Kraj
MsgBox arr(1, 2) ' Rue de l'église, 21
MsgBox arr(1, 3) ' Toulouse
from scriptforge import CreateScriptService
svc = CreateScriptService("Array")
bas = CreateScriptService("Basic")
arr = svc.ImportFromCSVFile(r"C:\Temp\mojaDatoteka.csv", dateformat = "YYYY/MM/DD")
bas.MsgBox(arr[0][3]) # Kraj
bas.MsgBox(arr[1][2]) # Rue de l'église, 21
bas.MsgBox(arr[1][3]) # Toulouse
V enodimenzionalnem polju poiščite število, niz ali datum. Primerjava besedil lahko razlikuje med velikimi in malimi črkami ali pa ne.
Če je polje razvrščeno, mora biti zapolnjeno homogeno, kar pomeni, da morajo biti vsi njegovi elementi skalarji iste vrste (elementa Empty in Null sta prepovedana).
Rezultat metode je nepredvidljiv, če je polje razglašeno za razvrščeno, pa dejansko ni.
V razvrščenih poljih se izvede dvojiško iskanje. Sicer se polja enostavno pregleda od vrha do dna in elementi Empty in Null so prezrti.
Ta metoda vrne LBound(input array) - 1, če iskanje ni bilo uspešno.
svc.IndexOf(array_1d: any[0..*], tofind: any, casesensitive: bool = False, sortorder: str = ''): int
array_1d: polje za pregled.
tofind: iskano število, datum ali niz.
casesensitive: razločevanje med malimi in velikimi črkami, le za primerjavo nizov (privzeta vrednost je False).
sortorder: vrstni red razvrščanja, možne vrednosti so "ASC" (naraščajoče), "DESC" (padajoče) in "" (nerazvrščeno, privzeta vrednost).
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
Elemente, nanizane kot argumente, vstavi v vhodno polje pred danim indeksom.
Argumenti so naključno vstavljeni. Vsak izmed njih je lahko skalar ali poljubna vrsta podpolja.
svc.Insert(array_1d: any[0..*], before: int, arg0: any, [arg1: any] ...): any[0..*]
array_1d: predobstoječa matrika, lahko je prazna.
before: indeks elementa, pred katerim želimo vstavljati; mora biti v intervalu [LBound, UBound + 1].
arg0, arg2, ...: seznam elementov za vstavljanje v polje array_1d.
Dim a As Variant
a = SF_Array.Insert(Array(1, 2, 3), 2, "a", "b")
' (1, 2, "a", "b", 3)
Na njemu ustrezno mesto v razvrščeno polje vstavi nov element.
Polje mora biti homogeno zapolnjeno, kar pomeni, da morajo biti vsi njegovi elementi skalarji iste vrste.
Elementa Empty in Null sta prepovedana.
svc.InsertSorted(array_1d: any[0..*], item: any, sortorder: str = 'ASC', casesensitive: bool = False): any[0..*]
array_1d: polje, v katerega bo vstavljena vrednost.
item: skalarna vrednost za vstavljanje, iste vrste kot obstoječi elementi polja.
sortorder: vrstni red razvrščanja, možni vrednosti sta "ASC" (naraščajoče, privzeto) in "DESC" (padajoče).
casesensitive: razločevanje med malimi in velikimi črkami, le za primerjavo nizov (privzeta vrednost je False).
Dim a As Variant
a = SF_Array.InsertSorted(Array("A", "C", "a", "b"), "B", CaseSensitive := True)
' ("A", "B", "C", "a", "b")
Tvori množico, kot ničelno polje, tako da izvede operacijo preseka na obeh vhodnih poljih. Elementi rezultata se nahajajo v obeh poljih.
Polje rezultata je razvrščeno v naraščajočem vrstnem redu.
Obe vhodni polji morata biti homogeno zapolnjeni, kar pomeni, da morajo biti vsi njuni elementi skalarji iste vrste. Elementa Empty in Null sta prepovedana.
Primerjava besedil lahko razlikuje med velikimi in malimi črkami ali pa ne.
svc.Intersection(array1_1d: any[0..*], array2_1d: any[0..*], casesensitive: bool = False): any[0..*]
array1_1d: prvo vhodno polje.
array2_1d: drugo vhodno polje.
CaseSensitive: razločevanje med malimi in velikimi črkami; velja za polja, zapolnjena z besedilnimi elementi (privzeta vrednost je False).
Dim a As Variant
a = SF_Array.Intersection(Array("A", "C", "A", "b", "B"), Array("C", "Z", "b"), True)
' ("C", "b")
Združi dvodimenzionalno polje z dvema ločiloma: prvim za stolpce, drugim za vrstice.
svc.Join2D(array_2d: any [0..*, 0..*], [columndelimiter: str], [rowdelimiter: str], [quote: str]): str
array_2d: dvodimenzionalno polje, vsak njegov element mora biti besedilo, število, datum ali logična vrednost.
Datumi se pretvorijo v obliko LLLL-MM-DD uu:mm:ss.
Neveljavne elemente zamenja niz ničelne dolžine.
columndelimiter: ločilo med stolpci (privzeta vrednost je tabulator/Chr(9)).
rowdelimiter: ločilo med vrsticami (privzeta vrednost je LineFeed/Chr(10))
quote: če je True, zaščiti nize z dvojnimi narekovaji. Privzeta vrednost je False.
' arr = | 1, 2, "A", [2020-02-29], 51, 2, "A", [2020-02-29], 5 |
' | 6, 7, "this is a string", 9, 106, 7, "this is a string", 9, 10 |
Dim arr as Variant : arr = Array()
arr = SF_Array.AppendRow(arr, Array(1, 2, "A", [2020-02-29], 51, 2, "A", [2020-02-29], 5))
arr = SF_Array.AppendRow(arr, Array(6, 7, "this is a string", 9, 106, 7, "this is a string", 9, 10))
Dim arrText as String
arrText = SF_Array.Join2D(arr, ",", "/", False)
' 1,2,A,,51,2,A,,5/6,7,this is a string,9,106,7,this is a string,9,10
Elemente, nanizane kot argumente, vstavi na začetek vhodnega polja.
svc.Prepend(array_1d: any[0..*], arg0: any, [arg1: any] ...): any[0..*]
array_1d: predobstoječa matrika, lahko je prazna.
arg0, arg1, ...: seznam elementov, ki jih želite pripeti na začetek polja array_1d.
Dim a As Variant
a = SF_Array.Prepend(Array(1, 2, 3), 4, 5)
' (4, 5, 1, 2, 3)
Pripne nov stolpec na levo stran dvodimenzionalnega polja. Končno polje ima enako spodnjo mejo kot začetno dvodimenzionalno polje.
svc.PrependColumn(array_2d: any[0..*, 0..*], column: any[0..*]): any[0..*, 0..*]
array_2d: predobstoječa matrika, lahko je prazna. Če je to polje enodimenzionalno, šteje za zadnji stolpec ciljnega dvodimenzionalnega polja.
column: 1-dimenzionalno polje s toliko elementi, kolikor je vrstic v array_2d.
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
Doda novo vrstico na začetek dvodimenzionalnega polja. Končno polje ima enako spodnjo mejo kot začetno dvodimenzionalno polje.
svc.PrependRow(array_2d: any[0..*, 0..*], row: any[0..*]): any[0..*, 0..*]
array_2d: predobstoječa matrika, lahko je prazna. Če je to polje enodimenzionalno, šteje za zadnjo vrstico ciljnega dvodimenzionalnega polja.
row: enodimenzionalno polje s toliko elementi, kolikor je vrstic v array_2d.
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
Inicializira novo ničelno polje s številskimi vrednostmi.
svc.RangeInit(from: num, upto: num, [bystep: num]): num[0..*]
from: vrednost prvega elementa.
upto: zadnji element naj ne presega vrednosti UpTo.
bystep: razlika med dvema zaporednima elementoma (privzeto = 1).
Dim a As Variant
a = SF_Array.RangeInit(10, 1, -1)
' (10, 9, 8, 7, 6, 5, 4, 3, 2, 1)
Vrne preobrnjeno enodimenzionalno vhodno matriko.
svc.Reverse(array_1d: any[0..*]): any[0..*]
array_1d: polje, ki ga želimo preobrniti.
Dim a As Variant
a = SF_Array.Reverse(Array("a", 2, 3, 4))
' (4, 3, 2, "a")
Vrne poljubno permutacijo enodimenzionalnega polja.
svc.Shuffle(array_1d: any[0..*]): any[0..*]
array_1d: polje, ki ga želimo premešati.
Dim a As Variant
a = SF_Array.Shuffle(Array(1, 2, 3, 4))
' Polje "a" je zdaj v naključnem zaporedju, npr. (2, 3, 1, 4)
Vrne podmnožico enodimenzionalnega polja.
svc.Slice(array_1d: any[0..*], from: int, [upto: int]): any[0..*]
array_1d: polje, ki ga želite razrezati.
from: spodnji indeks v array_1d podpolja za izvlečenje (vključno s from).
upto: zgornji indeks array_1d podpolja za izvlečenje (vključno z upto). Privzeta vrednost je zgornja meja array_1d. Če je upto < from, bo vrnjeno polje prazno.
Dim a As Variant
a = SF_Array.Slice(Array(1, 2, 3, 4, 5), 1, 3) ' (2, 3, 4)
Razvrsti enodimenzionalno polje po naraščajočem ali padajočem vrstnem redu. Primerjava besedil lahko razlikuje med velikimi in malimi črkami ali pa ne.
Polje mora biti homogeno zapolnjeno, kar pomeni, da morajo biti vsi njegovi elementi skalarji iste vrste.
Elementa Empty in Null sta dovoljena. Običajno velja: Empty < Null < poljubna druga skalarna vrednost.
svc.Sort(array_1d: any[0..*], sortorder: str, casesensitive: bool = False): any[0..*]
array_1d: polje za razvrščanje.
sortorder: vrstni red razvrščanja, možni vrednosti sta "ASC" (naraščajoče, privzeto) in "DESC" (padajoče).
casesensitive: razločevanje med malimi in velikimi črkami, le za primerjavo nizov (privzeta vrednost je False).
Dim a As Variant
a = SF_Array.Sort(Array("a", "A", "b", "B", "C"), CaseSensitive := True)
' ("A", "B", "C", "a", "b")
Vrne permutacijo stolpcev v dvodimenzionalnem polju, razvščenih po vrednostih v podani vrstici.
Vrstica mora biti homogeno zapolnjena, kar pomeni, da morajo biti vsi njeni elementi skalarji iste vrste.
Elementa Empty in Null sta dovoljena. Običajno velja: Empty < Null < poljubna druga skalarna vrednost.
svc.SortColumns(array_2d: any[0..*, 0..*], rowindex: int, sortorder: str, casesensitive: bool = False): any[0..*, 0..*]
array_2d: dvodimenzionalno polje za razvrščanje.
rowindex: indeks vrstice, glede na katero bodo razvrščeni stolpci.
sortorder: vrstni red razvrščanja, možni vrednosti sta "ASC" (naraščajoče, privzeto) in "DESC" (padajoče).
casesensitive: razločevanje med malimi in velikimi črkami, le za primerjavo nizov (privzeta vrednost je False).
' arr = | 5, 7, 3 |
' | 1, 9, 5 |
' | 6, 1, 8 |
Dim arr as Variant : arr = Array(5, 7, 3)
arr = SF_Array.AppendRow(arr, Array(1, 9, 5))
arr = SF_Array.AppendRow(arr, Array(6, 1, 8))
arr = SF_Array.SortColumns(arr, 2, "ASC")
' arr = | 7, 5, 3 |
' | 9, 1, 5 |
' | 1, 6, 8 |
Vrne permutacijo vrstic v dvodimenzionalnem polju, razvščenih po vrednostih v podanem stolpcu.
Stolpec mora biti homogeno zapolnjen, kar pomeni, da morajo biti vsi njegovi elementi skalarji iste vrste.
Elementa Empty in Null sta dovoljena. Običajno velja: Empty < Null < poljubna druga skalarna vrednost.
svc.SortRows(array_2d: any[0..*, 0..*], columnindex: int, sortorder: str, casesensitive: bool = False): any[0..*, 0..*]
array_2d: polje za razvrščanje.
columnindex: indeks stolpca, glede na katerega bodo razvrščene vrstice.
sortorder: vrstni red razvrščanja, možni vrednosti sta "ASC" (naraščajoče, privzeto) in "DESC" (padajoče).
casesensitive: razločevanje med malimi in velikimi črkami, le za primerjavo nizov (privzeta vrednost je False).
' arr = | 5, 7, 3 |
' | 1, 9, 5 |
' | 6, 1, 8 |
Dim arr as Variant : arr = Array(5, 7, 3)
arr = SF_Array.AppendRow(arr, Array(1, 9, 5))
arr = SF_Array.AppendRow(arr, Array(6, 1, 8))
arr = SF_Array.SortRows(arr, 0, "ASC")
' arr = | 1, 9, 5 |
' | 5, 7, 3 |
' | 6, 1, 8 |
Zamenja vrstice in stolpce v dvodimenzionalnem polju.
svc.Transpose(array_2d: any[0..*, 0..*]): any[0..*, 0..*]
array_2d: dvodimenzionalno polje za transponiranje.
' arr1 = | 1, 2 |
' | 3, 4 |
' | 5, 6 |
arr1 = Array(1, 2)
arr1 = SF_Array.AppendRow(arr1, Array(3, 4))
arr1 = SF_Array.AppendRow(arr1, Array(5, 6))
arr2 = SF_Array.Transpose(arr1)
' arr2 = | 1, 3, 5 |
' | 2, 4, 6 |
MsgBox arr2(0, 2) ' 5
Iz enodimenzionalnega polja odstrani vse vnose Null in Empty ter vnose ničelne dolžine.
Nizi so okrajšani s funkcijo LibreOfficeDev Basic Trim().
svc.TrimArray(array_1d: any[0..*]): any[0..*]
array_1d: polje za obrezavo.
Dim a As Variant
a = SF_Array.TrimArray(Array("A", "B", Null, " D "))
' ("A", "B", "D")
Tvori množico, kot ničelno polje, tako da izvede operacijo unije na obeh vhodnih poljih. Elementi rezultata izvirajo iz poljubnega od obeh polj.
Polje rezultata je razvrščeno v naraščajočem vrstnem redu.
Obe vhodni polji morata biti homogeno zapolnjeni, kar pomeni, da morajo biti vsi njuni elementi skalarji iste vrste. Elementa Empty in Null sta prepovedana.
Primerjava besedil lahko razlikuje med velikimi in malimi črkami ali pa ne.
svc.Union(array1_1d: any[0..*], array2_1d: any[0..*], casesensitive: bool = False): any[0..*]
array1_1d: prvo vhodno polje.
array2_1d: drugo vhodno polje.
casesensitive: samo če so polja izpolnjena z nizi (privzeta vrednost je False).
Dim a As Variant
a = SF_Array.Union(Array("A", "C", "A", "b", "B"), Array("C", "Z", "b"), True)
' ("A", "B", "C", "Z", "b")
Sestavite množico enkratnih vrednosti, ki izhajajo iz vhodnega polja.
Vhodno polje mora biti homogeno zapolnjeno, kar pomeni, da morajo biti vsi njegovi elementi skalarji iste vrste. Elementa Empty in Null sta prepovedana.
Primerjava besedil lahko razlikuje med velikimi in malimi črkami ali pa ne.
svc.Unique(array_1d: any[0..*], casesensitive: bool = False): any[0..*]
array_1d: vhodna matrika.
casesensitive: samo če so polja izpolnjena z nizi (privzeta vrednost je False).
Dim a As Variant
a = SF_Array.Unique(Array("A", "C", "A", "b", "B"), CaseSensitive := True)
' ("A", "B", "C", "b")