Split Function for Formula

Hi, when formatting text I want to ensure Capital Case (i.e. each word capitalised) for example with names in a text field. While there are Upper(), Lower(), Find(), Trim() and ReplaceRegex() functions, there its no Split(text, text) function, which would split a given text into an array of texts to manipulate and then Join() back together. This would be very useful. Thanks!

i would also like to have a split function as i am importing a few documents that have valuable data in their name i want to split in table fields.

1 Like

Fibery doesn’t support string arrays, so implementing a dynamic Split function would be challenging.
I understand that @njyo’s need includes recombining with a Join function which would result in a single string, but maybe the effect would be best implemented as a single function (something like Map or ForEach) that operates on each word in a string.
Tbh, I think it’s unlikely to happen any time soon.
It’s more likely that there would be a specific Capital() function, but even that is not guaranteed :frowning:

For @dukevannori’s case, if the splitting is predictable (a guaranteed number of elements) it can probably already be done with combinations of Find() and Left() / Middle() / Right()

1 Like

One example would be the names of contacts that i stored “LastName, FirstName” in my Obsidian and also in Clickup.

Would be great to split those into two columns for better use in automations for emails etc.

then there is filenames that i used to store like this: “Date & Time (YYY-MM-DD HH:mm”) - (Type) - (Contact Names)

is that something i could split with your reccomendation?

Yes.

For the first example

you would need something like the following formulas:
Middle(Name, Find(Name, ", ") + 1, 99)
Left(Name, Find(Name, ", ") - 1)

For this

you would use variations on this theme, like
Middle(Name,14,3 to get the year
Middle(Name,18,2 to get the month,
and so on, to get the date info.
(assumes that the values remain in the same position every time)

Where there is variability in position, e.g. if Type is a variable length word, I would suggest using a Middle function to strip the first X letters, and then applying the Find function to find the end delimiter, e.g.

e.g. Left(Middle(Name, 35, 999), Find(Middle(Name, 35, 999), ")") - 1)

Alternatively, if you fancy going down a rabbit hole, you can teach yourself regex expressions and use the ReplaceRegex function instead :wink:

Or perhaps other Fibery users in the community have even better ideas :crossed_fingers:

1 Like

everything is possible it seems, even though often times i wonder if it needs to be so complicated :slight_smile:

Yeah, I hear you. Unfortunately, our developers are a precious resource, and every little request (“Can it be made to do xyz? It’s just a small thing…”) that they work on is time spent away from some other feature that we (or other users) think is at least as important :person_shrugging:

The workarounds are really just our way of apologising that the feature that is needed is not yet available :cry:

1 Like

totally understandable and greatly appreciated that you even take so much time and effort to help us users when we get stuck in our ways :slight_smile:
you are doing an amazing job. it’s one of the reasons why i investigate this as a clickup alternative in the future

Yeah, a Map or ForEach function could work. I actually even wouldn’t mind if it’s just done as a full-on Regex function, where I can manipulate the matches…

But I understand the resource limitations. :wink: