cancel
Showing results for 
Search instead for 
Did you mean: 
Reply
ScottRoso
Helper I
Helper I

Splitting a string by uppercase letter

Hey all,

I am severely stuck on this issue. I have a string that was created called GetName which contains a dynamically changing name based upon what is uploaded for example: JohnSmith, JaneDoe etc. What I want to do is to be able to separate this string based upon the location of an uppercase letter. There is no space or other special character that I can use to identify where I want the split to be so I am hoping that someone may have a better idea to perform the action.

 

Thanks for any and all input!

 

 

1 ACCEPTED SOLUTION

Accepted Solutions
ekarim2020
Super User
Super User

Here is one method:

ekarim2020_0-1645037089482.png

 

Snag_1f902e5.png

 

 

FROM:
range(1,sub(length(variables('varName')),1))

MAP:
if(contains(variables('varUpper'),substring(variables('varName'),item(),1) ), item(),0)

 

 

Snag_192e5d8.png

Snag_1962d14.png

 

LENGTH:
first(body('Filter_array'))

 

 

Snag_19664ae.png

 

STARTING POSITION:
first(body('Filter_array'))

LENGTH:
sub(length(variables('varName')), first(body('Filter_array')))

 

Here is some sample runtime output:

Snag_1b04ef5.png


Ellis
____________________________________
If I have answered your question, please mark the post as Solved.
If you like my response, please give it a Thumbs Up.

View solution in original post

8 REPLIES 8
DamoBird365
Microsoft
Microsoft

Hi @ScottRoso 

 

I've given this a go as follows:

 

A list of upper case letters A-Z, can be split() to create an array and the used with contains() (case sensitive) and indexof to get the position of Uppercase letters.

 

Select input:

split(outputs('ComposeUpperLetters'),',') 

 

DamoBird365_0-1645038019578.png

letter: 

if(contains(outputs('ComposeName'),item()),item(),'')
location:
if(contains(outputs('ComposeName'),item()),indexof(outputs('ComposeName'),item()),0)
 
This gives me an array of letters and locations, all bar 1 will be 0 and i can use a filter.
 
FROM split(outputs('ComposeName'),',')
item()?['location'] greater than 1
 
DamoBird365_1-1645038124328.png

 

Output:

 

DamoBird365_2-1645038172349.png

 

Please consider accepting my answer as a solution if it helps to solve your problem.

Cheers
Damien

Please take a look and subscribe to my YouTube Channel for more Power Platform ideas and concepts, or take a look at my website. Thanks

ekarim2020
Super User
Super User

Here is one method:

ekarim2020_0-1645037089482.png

 

Snag_1f902e5.png

 

 

FROM:
range(1,sub(length(variables('varName')),1))

MAP:
if(contains(variables('varUpper'),substring(variables('varName'),item(),1) ), item(),0)

 

 

Snag_192e5d8.png

Snag_1962d14.png

 

LENGTH:
first(body('Filter_array'))

 

 

Snag_19664ae.png

 

STARTING POSITION:
first(body('Filter_array'))

LENGTH:
sub(length(variables('varName')), first(body('Filter_array')))

 

Here is some sample runtime output:

Snag_1b04ef5.png


Ellis
____________________________________
If I have answered your question, please mark the post as Solved.
If you like my response, please give it a Thumbs Up.

@ekarim2020  I am trying your method but for whatever reason when I am typing out the "map" portion of the code

if(contains(variables('varUpper'),substring(variables('varName'),item(),1) ), item(),0)

 

it constantly reverts back to the following: if(contains(variables('varUpper'),substring(variables('varName'))))

 

Any idea on why it would do that/possible fixes?

Sorry, I should have added a note to Switch to text mode for the Select action:

Snag_1f804cf.png

Ellis

@ekarim2020The weird thing is that I have been in text mode and it still reverts for some reason. It does not seem to want to enter any of the "item" function.

@DamoBird365Could you explain a little more on the "Select" step? The note shows split(outputs('ComposeUpperLetters'), ',')contains(outputs('ComposeName'), item())  The system does not like this and throws a flow error message. Thanks again for your help.

Snag_34f27d3.png

 

If you create the flow and then copy-and-paste the expression below, does it allow you to save?

if(contains(variables('varUpper'),substring(variables('varName'),item(),1) ), item(),0)

 

Ellis

@ekarim2020For whatever reason the copy and paste seemed to work. I do have a slightly different issue now though but the entire process works. Thank you!

Helpful resources

Announcements
Microsoft 365 Conference – December 6-8, 2022

Microsoft 365 Conference – December 6-8, 2022

Join us in Las Vegas to experience community, incredible learning opportunities, and connections that will help grow skills, know-how, and more.

Difinity Conference 2022

Difinity Conference 2022

Register today for two amazing days of learning, featuring intensive learning sessions across multiple tracks, led by engaging and dynamic experts.

European SharePoint Conference

European SharePoint Conference

The European SharePoint Conference returns live and in-person November 28-December 1 with 4 Microsoft Keynotes, 9 Tutorials, and 120 Sessions.

Users online (3,026)