I'm pretty new to Power Automate so this is likely a pretty easy question but I'm struggling.
I have a flow I’m working on that will fill out a word document with some items from a Sharepoint list.
I noticed that the street addresses were all coming in as upper case and that does not make the forms look very professional.
So I needed to learn how to change the first letter to caps and the rest to lower case.
So I went searching and found this post
https://powerusers.microsoft.com/t5/Building-Flows/Capitalize-first-letter-in-string/td-p/241149
I also found this blog
http://benitezhere.blogspot.com/2020/10/how-to-do-proper-case-in-flow.html
So I decided to give the blog method a try.
And it worked the first few times I tried it.
Then I got to some addresses that had some single letter abbreviations.
Example: 7234 W MAIN STREET
The flow errors on the single letter abbreviation for west.
Main Error
I can see why it errors as the length of one minus 1 is not a valid length.
Any thoughts on how to fix it?
Some pics of my flow
Overall Flow
More Flow
Getsvsaddr1 expression:
first(outputs('getdata')?['body']?['value'])?['ServiceAddress1']
addrtoarray expression:
split(toLower(outputs('getsvsaddr1')), ' ')
Here is where it fails
Error
Expression for uppercasefirstletter:
concat(first(toupper(item())), substring(item(), 1, sub(length(item()), 1)))
I’m open to any other methods for doing this or suggestions on how to handle the single letter abbreviations.
Any help would be appreciated.
Thanks!
Solved! Go to Solution.
Quite an interesting question and your explanation of why it crashes is spot on. Both of the methods you linked would error in the same way. Check out the following flow. Slightly simpler, also does not error:
The expression in "Capitalize each word" is:
if
(
equals(length(item()),1),
toupper(item()),
concat(first(toupper(item())),substring(item(),1,sub(length(item()),1)))
)
Explanation:
Basically the same as before, but checks the length of each word, if it is only one character, then it just does "toupper". If it is more than one character is does all that concat business. 👍
I can't thank you enough Paulie78!
I spent hours working on a new expression to get this to work and never did get it.
Thanks again for your time and effort!
It is greatly appreciated!
P.S. Looks like I need to work on some of the forum features for posting code and flows.
Quite an interesting question and your explanation of why it crashes is spot on. Both of the methods you linked would error in the same way. Check out the following flow. Slightly simpler, also does not error:
The expression in "Capitalize each word" is:
if
(
equals(length(item()),1),
toupper(item()),
concat(first(toupper(item())),substring(item(),1,sub(length(item()),1)))
)
Explanation:
Basically the same as before, but checks the length of each word, if it is only one character, then it just does "toupper". If it is more than one character is does all that concat business. 👍
I can't thank you enough Paulie78!
I spent hours working on a new expression to get this to work and never did get it.
Thanks again for your time and effort!
It is greatly appreciated!
P.S. Looks like I need to work on some of the forum features for posting code and flows.
@Kstuck wrote:I can't thank you enough Paulie78!
I spent hours working on a new expression to get this to work and never did get it.
Thanks again for your time and effort!
It is greatly appreciated!
P.S. Looks like I need to work on some of the forum features for posting code and flows.
I think you do, you marked you own thank you message as the solution 🤣
User | Count |
---|---|
89 | |
37 | |
26 | |
13 | |
13 |
User | Count |
---|---|
127 | |
54 | |
38 | |
24 | |
21 |