# Searching character's

**URL:** <https://discourse.nodered.org/t/searching-characters/2348>\
**Category:** General\
**Created:** [16 August 2018 18:19 UTC](https://discourse.nodered.org/t/searching-characters/2348 "2018-08-16T18:19:36Z")\
**Posts on this page:** 12\
**Page:** 1

<div class="post-metadata">

**Author:** ![leomozzer](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/leomozzer/32/1783_2.png) [@leomozzer](https://discourse.nodered.org/u/leomozzer)\
**Post date:** [16 August 2018 18:19 UTC](https://discourse.nodered.org/t/searching-characters/2348/1 "2018-08-16T18:19:36Z")

</div>

i want to check if have some words in a phrase, like "Bom". Think that is how to start but dont know how to check if "Bom" exist in my phrase. ![Captura%20de%20tela%20de%202018-08-16%2015-02-03](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/2X/1/177f2846af2181c8f52a3516b937a17253181135.png)

---

<div class="post-metadata">

**Author:** ![ghayne](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/ghayne/32/39_2.png) [@ghayne](https://discourse.nodered.org/u/ghayne)\
**Post date:** [16 August 2018 18:28 UTC](https://discourse.nodered.org/t/searching-characters/2348/2 "2018-08-16T18:28:46Z")

</div>

Try the switch node "Contains" option.

---

<div class="post-metadata">

**Author:** ![leomozzer](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/leomozzer/32/1783_2.png) [@leomozzer](https://discourse.nodered.org/u/leomozzer)\
**Post date:** [16 August 2018 18:54 UTC](https://discourse.nodered.org/t/searching-characters/2348/3 "2018-08-16T18:54:34Z")

</div>

I need to check if my msg.payload out have the work "bom". I put the switch node and dont have success

 ![Captura%20de%20tela%20de%202018-08-16%2015-52-47](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/2X/0/01a704bc0c1f0f092d83712b235b991164172c8c.png)

---

<div class="post-metadata">

**Author:** ![cymplecy](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/cymplecy/32/2773_2.png) [@cymplecy](https://discourse.nodered.org/u/cymplecy)\
**Post date:** [16 August 2018 19:21 UTC](https://discourse.nodered.org/t/searching-characters/2348/4 "2018-08-16T19:21:02Z")

</div>

This should help you

 ![image](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/2X/3/38f659137c26606994703776e58a0af5d90a3c4b.png)

 ![image](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/2X/a/aab2dc730b2e10a21a929569c69bc4b07fbf47ba.png)

 ![image](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/2X/c/c89beaf5f6d951b90252750b68476d65a9fe63fa.png)

`[{"id":"c4dc9486.8bb738","type":"inject","z":"dc97015.997e9","name":"","topic":"","payload":"this is a string with bom in it","payloadType":"str","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":610,"y":80,"wires":[["19c6b999.e75d56"]]},{"id":"19c6b999.e75d56","type":"switch","z":"dc97015.997e9","name":"","property":"payload","propertyType":"msg","rules":[{"t":"cont","v":"bom","vt":"str"}],"checkall":"true","repair":false,"outputs":1,"x":770,"y":80,"wires":[["8b5d4786.14d8a8"]]},{"id":"8b5d4786.14d8a8","type":"debug","z":"dc97015.997e9","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":1210,"y":80,"wires":[]}]`

---

<div class="post-metadata">

**Author:** ![hotNipi](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/hotnipi/32/383_2.png) [@hotNipi](https://discourse.nodered.org/u/hotNipi)\
**Post date:** [16 August 2018 19:41 UTC](https://discourse.nodered.org/t/searching-characters/2348/5 "2018-08-16T19:41:31Z")

</div>

The `contains` option is case sensitive. You need to use every combination you can figure out if you need to find them from arbitrary text.  
Bom, BOM, and is the "!BOM!" as dangerous as the "bOm" 🙂

---

<div class="post-metadata">

**Author:** ![ukmoose](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/ukmoose/32/13_2.png) [@ukmoose](https://discourse.nodered.org/u/ukmoose)\
**Post date:** [16 August 2018 20:15 UTC](https://discourse.nodered.org/t/searching-characters/2348/6 "2018-08-16T20:15:58Z")

</div>

or copy msg.payload to msg.lowercase and force the contents of that to lowercase and then run the search on that

---

<div class="post-metadata">

**Author:** ![hotNipi](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/hotnipi/32/383_2.png) [@hotNipi](https://discourse.nodered.org/u/hotNipi)\
**Post date:** [16 August 2018 20:18 UTC](https://discourse.nodered.org/t/searching-characters/2348/7 "2018-08-16T20:18:30Z")

</div>

And then it's time for regex 😆

---

<div class="post-metadata">

**Author:** ![leomozzer](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/leomozzer/32/1783_2.png) [@leomozzer](https://discourse.nodered.org/u/leomozzer)\
**Post date:** [16 August 2018 20:27 UTC](https://discourse.nodered.org/t/searching-characters/2348/8 "2018-08-16T20:27:10Z")

</div>

I used the code below to set wath i was looking for. Thanks U guys.  
`var msgList = [];`

`var letterList = msg.payload.output.text[0];`

`letterList = letterList.toString('uft8');`

`var tam_msg = letterList.length;`

`for (var i = 0; i < tam_msg; i++){`

`if(letterList[i] == 'b' && letterList[i+1] == 'o' && letterList[i+2] == 'm'){`

`//code_below`

`}`

`}`

`return [msgList];`

---

<div class="post-metadata">

**Author:** ![dceejay](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/dceejay/32/38_2.png) [@dceejay](https://discourse.nodered.org/u/dceejay)\
**Post date:** [16 August 2018 22:19 UTC](https://discourse.nodered.org/t/searching-characters/2348/9 "2018-08-16T22:19:32Z")

</div>

It's probably worth looking at the JavaScript .indexOf function.

---

<div class="post-metadata">

**Author:** ![knolleary](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/knolleary/32/3_2.png) [@knolleary](https://discourse.nodered.org/u/knolleary)\
**Post date:** [16 August 2018 22:42 UTC](https://discourse.nodered.org/t/searching-characters/2348/10 "2018-08-16T22:42:16Z")

</div>

JavaScript has lots of ways to check if a string appears within another string without you having to loop over the individual characters.

```auto
if (/bom/.test(msg.payload.output.text[0])) {

}

```

```auto
if (msg.payload.output.text[0].indexOf("bom") > -1) {

}

```

---

<div class="post-metadata">

**Author:** ![shrickus](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/shrickus/32/517_2.png) [@shrickus](https://discourse.nodered.org/u/shrickus)\
**Post date:** [16 August 2018 22:45 UTC](https://discourse.nodered.org/t/searching-characters/2348/11 "2018-08-16T22:45:37Z")

</div>

Seems a lot easier to use a `switch` node with a regex:

![image](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/2X/5/50520c2a8997a2123e338baff62a1b4c11a86c0c.png)

---

<div class="post-metadata">

**Author:** ![machadotiago](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/machadotiago/32/23776_2.png) [@machadotiago](https://discourse.nodered.org/u/machadotiago)\
**Post date:** [19 August 2018 15:29 UTC](https://discourse.nodered.org/t/searching-characters/2348/12 "2018-08-19T15:29:13Z")

</div>

Try to avoid using the function for things that can be solved with the "Switch" or the "Change", soon you will realize how powerful are those 2 nodes.  
#fikdica
