I have text in this format:

Red and green apples
2 Bananas
red orange
Grape fruit

I need it in this format:

c("Red and green apples", "Pear", "2 Bananas", "red orange", "Melon", "Grape fruit")

I also have these numbers:


Which I need in the format below. Note that this is same format as above except they are numbers so they are missing quotes:

c(1, 172, 3, 183, 16, 178, 68, 56, 687, 576, 455)

Can I make a shortcut that will automatically convert the text?


You can do this with regex in Shortcuts.

Here with text: enter image description here

and here with integers: enter image description here

The code is the same, it’s only the first "Text" action which differ. More about regex in Shortcuts in this reddit post.

Edit: do not confuse, in the two first "Find Text" in the two screenshots, the | in (\n|$) is the vertical bar character, not a uppercase "i" or a lower case "L".

Edit 2: As asked in the comments by the OP and in the edited question, here is a different version with less constraint in the input (remark: in the first Replace Text action, in the field Replace With, you should read "$1",␣, ie a space should be after the comma, but the screenshot cannot display it, and in the 3rd Replace Text, in the field Find Text, you should read (.+),␣):

enter image description here

| improve this answer | |
  • Hi the above regex only works on lines that have 1 word. How can I get regex to work on lines that have 1 or more words? – luciano Apr 22 '19 at 15:59
  • @luciano What are the separator of words? Always a space, or can it be any other punctuation sign? Have you "words" like ora4nge in the input (mix of letters and digits)? – quark67 Apr 22 '19 at 18:16
  • Can be any punctuation sign. Words include letters only. – luciano Apr 23 '19 at 7:40
  • @luciano Does my updated answer satisfy your requirement? – quark67 Apr 23 '19 at 20:42
  • Hi that is very nearly what I'm after, but each line should fall within 1 pair of quotes. Please see my edited question. Thanks! – luciano Apr 24 '19 at 21:21

We want the equivalent of this piece of JS code:

"c(" + input_text.split('\n').join(', ') + ")"

So the script will be something like this:

Split Text (New Lines) -> Combine Text (Custom separator ", ")

Integrate as you wish with the rest of the script.

| improve this answer | |

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .