Content deleted Content added
... |
|||
(22 intermediate revisions by 2 users not shown) | |||
Line 1:
{{Lua|Module:String|Module:TableTools|Module:Yesno}}
Implements template '''{{tl|Str find word}}'''.
Line 8 ⟶ 5:
For example, in the source string '{{mono|1=foo, bar}}' the word '{{mono|1=bar}}' appears, but the word '{{mono|1=november}}' does not.
:<code><nowiki>{{#invoke:Str find word |main |source=foo, bar |word=bar}}</nowiki></code> <small>({{code|1=True}})</small> → {{#invoke:Str find word |main |source=foo, bar |word=bar}}
:<code><nowiki>{{#invoke:Str find word |main |source=alpha, beta, gamma |word=november}}</nowiki></code> <small>({{code|1=False}})</small> → {{#invoke:Str find word |main |source=alpha, beta, gamma |word=november}}
''Multiple word check'': The search can be extended to check for multiple words being present.
''AND''-list of words, all words must be present:
:<code><nowiki>{{#invoke:Str find word |main |source=alpha, beta, gamma |andwords=beta, alpha}}</nowiki></code> <small>({{code|1=True}})</small> → {{#invoke:Str find word |main |source=alpha, beta, gamma |andwords=beta, alpha}}
:<code><nowiki>{{#invoke:Str find word |main |source=alpha, beta, gamma |andwords=beta, omega}}</nowiki></code> <small>({{code|1=False}})</small> → {{#invoke:Str find word |main |source=alpha, beta, gamma |andwords=beta, omega}}
''OR''-list of words, at least one off the words must be present:
:<code><nowiki>{{#invoke:Str find word |main |source=alpha, beta, gamma |orwords=beta, alpha}}</nowiki></code> <small>({{code|1=True}})</small> → {{#invoke:Str find word |main |source=alpha, beta, gamma |orwords=beta, alpha}}
:<code><nowiki>{{#invoke:Str find word |main |source=alpha, beta, gamma |orwords=beta, omega}}</nowiki></code> <small>({{code|1=False}})</small> → {{#invoke:Str find word |main |source=alpha, beta, gamma |orwords=beta, omega}}
Complete words: the complete word is '{{mono|1=foobar}}' (example needed)
Line 32 ⟶ 29:
{{Str find word
|source= s=
|word= andwords= andw=
|orwords= orw=
|case=
|out-true=
Line 49 ⟶ 46:
}}
</pre>
:<code><nowiki>{{Str find word |source=cow, horse, dog, fish |word=dog
:<code><nowiki>{{Str find word |source=cow, horse, dog, fish |word=cat
===True/False return value===
:When the ''word'' is found in the ''source'' (True), the function returns the ''word'' itself (by default), or {{para|out-true}} value (when entered non-empty).
:When not found (False), the function returns a empty string ({{code|''}}), or the {{para|out-false}} value when entered.
{| class="wikitable"
Line 59 ⟶ 58:
| {{para|1=source|2=alpha, foo, lima}}
| {{para|word|foo}}
| {{#invoke:Str find word |main |explain=true |source=alpha, foo, lima |word=foo}}
| {{aye}}
|
Line 65 ⟶ 64:
| {{para|1=source|2=alpha, foo, lima}}
| {{para|word|bar}}
| {{#invoke:Str find word |main |explain=true |source=alpha, foo, lima |word=foo-bar}}
| {{nay}}
| full word ''bar'' not in the source
Line 71 ⟶ 70:
| {{para|1=source|2=alpha, foo, lima}}
| {{para|word|foobar}}
| {{#invoke:Str find word |main |explain=true |source=alpha, foo, lima}}
| {{nay}}
| word ''foobar'' not in the source as full word
|}
===AND
:{{para|word}}
:{{para |andwords}} accepts a ''list of words'' that all will be checked with the ''AND''-requirement (each word must be present).
:
{| class="wikitable" style=""
Line 86 ⟶ 84:
! {{para|1=source}}<br/>{{para|1=s}}
! {{para|1=andwords}}<br/>{{para|1=word}}
! result
! note
|-
| {{para|1=s|2=alpha, foo, lima, delta}}
| {{para |andw|delta, lima}}
| {{#invoke:Str find word |main |explain=true |s=alpha, foo, lima, delta |andw=delta, lima}}
| both words present in the source
|-
| {{para|1=s|2=alpha, foo, lima, delta}}
| {{para |andw|foo, nov}}
| {{#invoke:Str find word |main |explain=true |s=alpha, foo, lima, delta}}
| AND-logic: A word in the ''AND''-list is not present ({{mono|nov}}), so false
|-
| {{para|1=s|2=alpha, foo, lima, delta}}
| {{para |andw|delta}}
| {{#invoke:Str find word |main |explain=true |s=alpha, foo, lima, delta |andw=delta}}
| {{para|w}} and {{para |andw}} are combined
|-
| {{para|1=s|2=alpha, foo, lima, delta}}
| {{para |andw|bar, april}}
| {{#invoke:Str find word |main |explain=true |s=alpha, foo, lima, delta |andw=delta}}
|
|}
===OR-wordlist checks===
;{{para |orwords}}, {{para |orw}}
:Accepts a ''list of words'' that all will be checked by the ''OR-requirement'' ("at least one of the words must be present).
{| class="wikitable" style=""
|-
! {{para|1=source}}<br/>{{para|1=s}}
!
! {{para|1=orwords}}
! result
Line 91 ⟶ 121:
|-
| {{para|1=s|2=alpha, foo, lima, delta}}
|
|
| {{#invoke:Str find word |main |explain=true |s=alpha, foo, lima, delta |andw=delta, lima}}
| both words present in the source
|-
| {{para|1=s|2=alpha, foo, lima, delta}}
|
|
| {{#invoke:Str find word |main |explain=true |s=alpha, foo, lima, delta}}
|
|-
| {{para|1=s|2=alpha, foo, lima, delta}}
| {{para |andw|delta}}
|
| {{#invoke:Str find word |main |explain=true |s=alpha, foo, lima, delta |andw=delta}}
| {{para|w}} and {{para |andw}} are combined
|-
| {{para|1=s|2=alpha, foo, lima, delta}}
|
| {{para |orw|delta, lima}}
| {{#invoke:Str find word |main |explain=true |s=alpha, foo, lima, delta |orw=delta, lima}}
| both OR-words are present in the source
|-
Line 117 ⟶ 147:
|
|
| {{#invoke:Str find word |main |explain=true |s=alpha, foo, lima, delta |orw=foo, nov}}
| OR-logic: one of the words is present ({{para|foo}}), so true
|-
| {{para|1=s|2=alpha, foo, lima, delta}}
| {{para |andw|alpha, lima}}
| {{para |orw|foo, nov}}
| {{#invoke:Str find word |main |explain=true |s=alpha, foo, lima, delta |andw=alpha, lima |orw=foo, nov}}
|
|-
| {{para|1=s|2=alpha, foo, lima, delta}}
| {{para |andw|bar, april}}
| {{para |orw|nov, dec}}
| {{#invoke:Str find word |main |explain=true |s=alpha, foo, lima, delta |andw=delta |orw=nov, dec}}
| none of the OR-words is present, so false
|}
===both AND-words and OR-words to check===
;{{para |andwords}} {{para |orwords}}
:checks ''both'' lists for their own check: "ANd-words" must all be present, "OR-words" must have at least one present.
:Result: True if both check results are True, otherwise False.
{| class="wikitable" style=""
|-
! {{para|1=source}}<br/>{{para|1=s}}
! {{para|1=andwords}}<br/>{{para|1=word}}
! {{para|1=orwords}}
! result
! note
|-
| {{para|1=s|2=alpha, foo, lima, delta}}
| {{para |andw|delta, lima}}
|
| {{#invoke:Str find word |main |explain=true |s=alpha, foo, lima, delta |andw=delta, lima}}
| both words present in the source
|-
| {{para|1=s|2=alpha, foo, lima, delta}}
| {{para |andw|foo, nov}}
|
| {{#invoke:Str find word |main |explain=true |s=alpha, foo, lima, delta}}
| AND-logic: A word in the ''AND''-list is not present ({{mono|nov}}), so false
|-
| {{para|1=s|2=alpha, foo, lima, delta}}
| {{para |andw|delta}}
|
| {{#invoke:Str find word |main |explain=true |s=alpha, foo, lima, delta |andw=delta}}
| {{para|w}} and {{para |andw}} are combined
|-
| {{para|1=s|2=alpha, foo, lima, delta}}
|
| {{para |orw|delta, lima}}
| {{#invoke:Str find word |main |explain=true |s=alpha, foo, lima, delta |orw=delta, lima}}
| both OR-words are present in the source
|-
| {{para|1=s|2=alpha, foo, lima, delta}}
|
|
| {{#invoke:Str find word |main |explain=true |s=alpha, foo, lima, delta |orw=foo, nov}}
| OR-logic: one of the words is present ({{para|foo}}), so true
|-
| {{para|1=s|2=alpha, foo, lima, delta}}
| {{para |andw|alpha, lima}}
| {{para |orw|foo, nov}}
| {{#invoke:Str find word |main |explain=true |s=alpha, foo, lima, delta |andw=alpha, lima |orw=foo, nov}}
|
|-
| {{para|1=s|2=alpha, foo, lima, delta}}
| {{para |andw|bar, april}}
| {{para |orw|nov, dec}}
| {{#invoke:Str find word |main |explain=true |s=alpha, foo, lima, delta |andw=delta |orw=nov, dec}}
| none of the OR-words is present, so false
|}
===Edge cases ===
Line 143 ⟶ 228:
| {{para|1=source|2=<blank>}}
| {{para|word|beta}}
| {{#invoke:Str find word |main |source= |word=beta
| {{nay}}
|-
| {{para|1=source|2=alpha, beta, gamma}}
| {{para|word|<blank>}}
| {{#invoke:Str find word |main |alpha, beta, gamma |word=
| {{nay}}
|}
<noinclude>
==untested; noinclude from main /doc==
:As of Mar 2023, not supported.
===
:{{para|casesensitive|true}}, {{para|case|true}} Case-sensistive (A=/=a) DEFAULT
:{{para|casesensitive|false}}, {{para|case|false}} Not case-sensistive (A=a)
{| class="wikitable" style=""
|-
Line 165 ⟶ 254:
| {{para|w|foo}}
|
| → {{#invoke:Str find word |main |explain=true |s=alpha, foo, lima|w=foo|out-true=yes|out-false=no}}
|
|-
Line 171 ⟶ 260:
| {{para|w|foobar}}
|
| → {{#invoke:Str find word |main |explain=true |source=alpha, foo, lima |word=foobar|out-true=yes|out-false=no}}
|
|-
Line 177 ⟶ 266:
| {{para|w|foo}}
|
| → {{#invoke:Str find word |main |explain=true |source=alpha, foobar, lima |word=foo|out-true=yes|out-false=no}}
| 'foo' is not the complete word
|-
Line 183 ⟶ 272:
| {{para|w|foo}}
|
| → {{#invoke:Str find word |main |explain=true |source=alpha, FOO, lima |word=foo|out-true=yes|out-false=no|case=false}}
| {{para|case|false}}: a=A ''(default)''
|-
Line 189 ⟶ 278:
| {{para|w|foo}}
|
| → {{#invoke:Str find word |main |explain=true |source=alpha, FOO, lima |word=foo|out-true=yes|out-false=no|case=true}}
| {{para|case|true}}: a=/=A
|}
===Rephrase True, False result: {{para|1=out-true=, out-false|2=}}===
{| class="wikitable"
|-
! colspan="5" style="padding-left:3em; text-align:left;" | {{para|
|-
| {{para|1=source|2=alpha, foo, lima}}
| {{para|word|foo}}
| {{#invoke:Str find word |main |explain=true |source=alpha, foo, lima |word=foo|out-true=Yes, a hit|out-false=No, not found}}
| {{aye}}
|-
| {{para|1=source|2=alpha, foo, lima}}
| {{para|word|foobar}}
| {{#invoke:Str find word |main |explain=true |source=alpha, foo, lima |word=foobar|out-true=Yes, a hit|out-false=No, not found}}
| {{nay}}
|}
Line 222 ⟶ 311:
| {{para|1=source|2=YeS}}
| {{para|1=word|2=true}}
| {{#invoke:Str find word |main |booleans=true |source=YeS |word=1
|
|-
| {{para|1=source|2=0}}
| {{para|1=word|2=FalSe}}
| {{#invoke:Str find word |main |booleans=true |source=0 |word=FalSe
| ''note:'' the ''word'' "false" is found and returned
|}
===quotes, escape===
:under
===synonyms===
:under construction
</noinclude>
==Errors and analysis==
|