# Separate letters and add a hyphen

**URL:** <https://discourse.nodered.org/t/separate-letters-and-add-a-hyphen/77677>\
**Category:** Dashboard\
**Tags:** node-red-dashboard, function-node\
**Created:** [18 April 2023 02:27 UTC](https://discourse.nodered.org/t/separate-letters-and-add-a-hyphen/77677 "2023-04-18T02:27:27Z")\
**Posts on this page:** 10\
**Page:** 1

<div class="post-metadata">

**Author:** ![Jhontan14](https://avatars.discourse-cdn.com/v4/letter/j/2acd7d/32.png) [@Jhontan14](https://discourse.nodered.org/u/Jhontan14)\
**Post date:** [18 April 2023 02:27 UTC](https://discourse.nodered.org/t/separate-letters-and-add-a-hyphen/77677/1 "2023-04-18T02:27:27Z")

</div>

Hello community, I am trying to separate the word that is entered in the "Código" field, that is, the user will enter, for example, **AWS001** , and I want that when the debuj node arrives, it is separated by a script as shown below " **AWS-001**"  
 ![image](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/3X/1/3/1349f7fba40f0119967138911b7659eff9c171b6.png)

```auto
[
    {
        "id": "582fe26bc3e697bb",
        "type": "ui_form",
        "z": "e9c7705cf137b29e",
        "name": "",
        "label": "",
        "group": "1241bafcb7aa8ef3",
        "order": 0,
        "width": "6",
        "height": "21",
        "options": [
            {
                "label": "Canal Izquierdo",
                "value": "pesoIzq",
                "type": "number",
                "required": true,
                "rows": null
            },
            {
                "label": "Canal Derecho",
                "value": "pesoDer",
                "type": "number",
                "required": true,
                "rows": null
            },
            {
                "label": "Peso Total",
                "value": "peso",
                "type": "number",
                "required": true,
                "rows": null
            },
            {
                "label": "Tipo",
                "value": "tipo",
                "type": "text",
                "required": true,
                "rows": null
            },
            {
                "label": "Código",
                "value": "codigo",
                "type": "text",
                "required": true,
                "rows": null
            }
        ],
        "formValue": {
            "pesoIzq": "",
            "pesoDer": "",
            "peso": "",
            "tipo": "",
            "codigo": ""
        },
        "payload": "",
        "submit": "Enviar",
        "cancel": "Cancelar",
        "topic": "topic",
        "topicType": "msg",
        "splitLayout": false,
        "x": 390,
        "y": 200,
        "wires": [
            [
                "bfe3e43b.85fa88"
            ]
        ]
    },
    {
        "id": "1241bafcb7aa8ef3",
        "type": "ui_group",
        "name": "Datos",
        "tab": "3eb7ca393c31b1fd",
        "order": 1,
        "disp": true,
        "width": "6",
        "collapse": false
    },
    {
        "id": "3eb7ca393c31b1fd",
        "type": "ui_tab",
        "name": "Datos",
        "icon": "dashboard",
        "disabled": false,
        "hidden": false
    }
]

```

---

<div class="post-metadata">

**Author:** ![Sean-McG](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/sean-mcg/32/54677_2.png) [@Sean-McG](https://discourse.nodered.org/u/Sean-McG)\
**Post date:** [18 April 2023 02:45 UTC](https://discourse.nodered.org/t/separate-letters-and-add-a-hyphen/77677/2 "2023-04-18T02:45:01Z")

</div>

You could add a function node after the form node as follows -

```auto
let txt = msg.payload.codigo
txt = txt.slice(0, 3) + "-" + txt.slice(3);
msg.payload.codigo=txt
return msg;

```

---

<div class="post-metadata">

**Author:** ![MecatronicaMADE](https://avatars.discourse-cdn.com/v4/letter/m/ce7236/32.png) [@MecatronicaMADE](https://discourse.nodered.org/u/MecatronicaMADE)\
**Post date:** [18 April 2023 02:54 UTC](https://discourse.nodered.org/t/separate-letters-and-add-a-hyphen/77677/3 "2023-04-18T02:54:50Z")

</div>

Hi @Jhontan14, Here is another option with split and join nodes, but the @Sean-McG option is more optimal.

```auto
[{"id":"e92e6ddeed745dfc","type":"tab","label":"Flow 1","disabled":false,"info":"","env":[]},{"id":"582fe26bc3e697bb","type":"ui_form","z":"e92e6ddeed745dfc","name":"","label":"","group":"1241bafcb7aa8ef3","order":0,"width":"6","height":"21","options":[{"label":"Canal Izquierdo","value":"pesoIzq","type":"number","required":true,"rows":null},{"label":"Canal Derecho","value":"pesoDer","type":"number","required":true,"rows":null},{"label":"Peso Total","value":"peso","type":"number","required":true,"rows":null},{"label":"Tipo","value":"tipo","type":"text","required":true,"rows":null},{"label":"Código","value":"codigo","type":"text","required":true,"rows":null}],"formValue":{"pesoIzq":"","pesoDer":"","peso":"","tipo":"","codigo":""},"payload":"","submit":"Enviar","cancel":"Cancelar","topic":"topic","topicType":"msg","splitLayout":false,"className":"","x":230,"y":280,"wires":[["e2297423265418f6","35cb7a28b7c634de"]]},{"id":"2816a4477ad1a036","type":"debug","z":"e92e6ddeed745dfc","name":"Codigo","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":940,"y":280,"wires":[]},{"id":"e2297423265418f6","type":"change","z":"e92e6ddeed745dfc","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"payload.codigo","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":400,"y":280,"wires":[["d8632ea688173c00"]]},{"id":"d8632ea688173c00","type":"split","z":"e92e6ddeed745dfc","name":"","splt":"1","spltType":"len","arraySplt":1,"arraySpltType":"len","stream":false,"addname":"","x":550,"y":280,"wires":[["10fe6a7e7c4cb669"]]},{"id":"10fe6a7e7c4cb669","type":"function","z":"e92e6ddeed745dfc","name":"function 1","func":"var counter = context.get(\"COUNTER\") || 0;\ncounter = (counter + 1) % 5;\ncontext.set(\"COUNTER\", counter);\n\nif(counter == 3){\n msg.payload = msg.payload + \"-\";\n}\nreturn msg;\n","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":680,"y":280,"wires":[["153901709f7992a1"]]},{"id":"153901709f7992a1","type":"join","z":"e92e6ddeed745dfc","name":"","mode":"auto","build":"object","property":"payload","propertyType":"msg","key":"topic","joiner":"\\n","joinerType":"str","accumulate":true,"timeout":"","count":"","reduceRight":false,"reduceExp":"","reduceInit":"","reduceInitType":"","reduceFixup":"","x":810,"y":280,"wires":[["2816a4477ad1a036"]]},{"id":"35cb7a28b7c634de","type":"debug","z":"e92e6ddeed745dfc","name":"msg completo","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":400,"y":220,"wires":[]},{"id":"1241bafcb7aa8ef3","type":"ui_group","name":"Datos","tab":"3eb7ca393c31b1fd","order":1,"disp":true,"width":"6","collapse":false},{"id":"3eb7ca393c31b1fd","type":"ui_tab","name":"Datos","icon":"dashboard","disabled":false,"hidden":false}]

```

---

<div class="post-metadata">

**Author:** ![Sean-McG](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/sean-mcg/32/54677_2.png) [@Sean-McG](https://discourse.nodered.org/u/Sean-McG)\
**Post date:** [18 April 2023 03:28 UTC](https://discourse.nodered.org/t/separate-letters-and-add-a-hyphen/77677/4 "2023-04-18T03:28:03Z")

</div>

Or use a change node with jsonata expression

`$substring(payload.codigo, 0,3) &'-'& $substring(payload.codigo, 3)`

My best effort for the benefit of @E1cid 🙃

---

<div class="post-metadata">

**Author:** ![E1cid](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/e1cid/32/77971_2.png) [@E1cid](https://discourse.nodered.org/u/E1cid)\
**Post date:** [18 April 2023 09:10 UTC](https://discourse.nodered.org/t/separate-letters-and-add-a-hyphen/77677/5 "2023-04-18T09:10:30Z")

</div>

Or you can use the change function of the change node.

 ![chrome_screenshot_1681808923964](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/3X/2/5/2589a7a9c17e3bfd6df98bd4cc86bb3f8da43813.png)

---

<div class="post-metadata">

**Author:** ![Sean-McG](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/sean-mcg/32/54677_2.png) [@Sean-McG](https://discourse.nodered.org/u/Sean-McG)\
**Post date:** [19 April 2023 00:55 UTC](https://discourse.nodered.org/t/separate-letters-and-add-a-hyphen/77677/6 "2023-04-19T00:55:50Z")

</div>

Now you are just showing off 😉

 ![image](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/3X/1/e/1ec2402d2fd490eb9e8dd63cc370bab0383d4fc4.jpeg)

---

<div class="post-metadata">

**Author:** ![Bean](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/bean/32/78987_2.png) [@Bean](https://discourse.nodered.org/u/Bean)\
**Post date:** [19 April 2023 04:05 UTC](https://discourse.nodered.org/t/separate-letters-and-add-a-hyphen/77677/7 "2023-04-19T04:05:55Z")

</div>

if the first section has a number it won't work. 🤭

---

<div class="post-metadata">

**Author:** ![E1cid](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/e1cid/32/77971_2.png) [@E1cid](https://discourse.nodered.org/u/E1cid)\
**Post date:** [19 April 2023 05:26 UTC](https://discourse.nodered.org/t/separate-letters-and-add-a-hyphen/77677/8 "2023-04-19T05:26:50Z")

</div>

Sure. what if the person adds a hyphen already to.  
Once all formats are shown i could offer other suggestions.  
like `(-?)(\d{3})$` and replace with `-$2`

---

<div class="post-metadata">

**Author:** ![E1cid](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/e1cid/32/77971_2.png) [@E1cid](https://discourse.nodered.org/u/E1cid)\
**Post date:** [19 April 2023 05:33 UTC](https://discourse.nodered.org/t/separate-letters-and-add-a-hyphen/77677/9 "2023-04-19T05:33:19Z")

</div>

Close, but my coding book is definetly not that big.

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/1X/d073cd938eafa2e558d7c2cd59003b3ef4963033.png) [@system](https://discourse.nodered.org/u/system)\
**Post date:** [3 May 2023 05:33 UTC](https://discourse.nodered.org/t/separate-letters-and-add-a-hyphen/77677/10 "2023-05-03T05:33:23Z")

</div>

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.
