வார்ப்புரு:Strfind short
&lt;noinclude&gt;&lt;!--
 -=============================================================
 - Strfind_short - Find a string within another string fast
 -=============================================================
 -                                  (see NOTES at bottom)
 --&gt;&lt;/noinclude&gt;{{#expr: 0{{
   #ifeq:{{padleft:|{{#expr: {{{3|7}}}+1}}|-{{{1}}} }}^|-{{{2|{{{1}}}}}}^|1+0*}}{{
   #ifeq:{{padleft:|{{#expr: {{{3|7}}}+2}}|-{{{1}}} }}^|{{padleft:|2|-{{{1}}} }}{{{2}}}^|2+0*}}{{
   #ifeq:{{padleft:|{{#expr: {{{3|7}}}+3}}|-{{{1}}} }}^|{{padleft:|3|-{{{1}}} }}{{{2}}}^|3+0*}}{{
   #ifeq:{{padleft:|{{#expr: {{{3|7}}}+4}}|-{{{1}}} }}^|{{padleft:|4|-{{{1}}} }}{{{2}}}^|4+0*}}{{
   #ifeq:{{padleft:|{{#expr: {{{3|7}}}+5}}|-{{{1}}} }}^|{{padleft:|5|-{{{1}}} }}{{{2}}}^|5+0*}}{{
   #ifeq:{{padleft:|{{#expr: {{{3|7}}}+6}}|-{{{1}}} }}^|{{padleft:|6|-{{{1}}} }}{{{2}}}^|6+0*}}{{
   #ifeq:{{padleft:|{{#expr: {{{3|7}}}+7}}|-{{{1}}} }}^|{{padleft:|7|-{{{1}}} }}{{{2}}}^|7+0*}}{{
   #ifeq:{{padleft:|{{#expr: {{{3|7}}}+8}}|-{{{1}}} }}^|{{padleft:|8|-{{{1}}} }}{{{2}}}^|8+0*}}{{
   #ifeq:{{padleft:|{{#expr: {{{3|7}}}+9}}|-{{{1}}} }}^|{{padleft:|9|-{{{1}}} }}{{{2}}}^|9+0*}}{{
   #ifeq:{{padleft:|{{#expr: {{{3|7}}}+10}}|-{{{1}}} }}^|{{padleft:|10|-{{{1}}} }}{{{2}}}^|10+0*}}&lt;!--
 ----------------------------- Check to skip lengths &gt; 10
 --&gt;{{#ifexpr: {{{lenstr|15}}}+{{{3|1}}}-1 &gt; 10 |{{
     #ifeq:{{padleft:|{{#expr: {{{3|7}}}+11}}|-{{{1}}} }}^|{{padleft:|11|-{{{1}}} }}{{{2}}}^|11+0*}}{{
     #ifeq:{{padleft:|{{#expr: {{{3|7}}}+12}}|-{{{1}}} }}^|{{padleft:|12|-{{{1}}} }}{{{2}}}^|12+0*}}{{
     #ifeq:{{padleft:|{{#expr: {{{3|7}}}+13}}|-{{{1}}} }}^|{{padleft:|13|-{{{1}}} }}{{{2}}}^|13+0*}}{{
     #ifeq:{{padleft:|{{#expr: {{{3|7}}}+14}}|-{{{1}}} }}^|{{padleft:|14|-{{{1}}} }}{{{2}}}^|14+0*}}{{
     #ifeq:{{padleft:|{{#expr: {{{3|7}}}+15}}|-{{{1}}} }}^|{{padleft:|15|-{{{1}}} }}{{{2}}}^|15+0*}} }}&lt;!--
 ----------------------------- Check to skip lengths &gt; 15
 --&gt;{{#ifexpr: {{{lenstr|15}}}+{{{3|1}}}-1 &gt; 15 |{{
     #ifeq:{{padleft:|{{#expr: {{{3}}}+16}}|-{{{1}}} }}^|{{padleft:|16|-{{{1}}} }}{{{2}}}^|16+0*}}{{
     #ifeq:{{padleft:|{{#expr: {{{3}}}+17}}|-{{{1}}} }}^|{{padleft:|17|-{{{1}}} }}{{{2}}}^|17+0*}}{{
     #ifeq:{{padleft:|{{#expr: {{{3}}}+18}}|-{{{1}}} }}^|{{padleft:|18|-{{{1}}} }}{{{2}}}^|18+0*}}{{
     #ifeq:{{padleft:|{{#expr: {{{3}}}+19}}|-{{{1}}} }}^|{{padleft:|19|-{{{1}}} }}{{{2}}}^|19+0*}}{{
     #ifeq:{{padleft:|{{#expr: {{{3}}}+20}}|-{{{1}}} }}^|{{padleft:|20|-{{{1}}} }}{{{2}}}^|20+0*}} }}&lt;!--
 ----------------------------- Check to skip lengths &gt; 20
 --&gt;{{#ifexpr: {{{lenstr|15}}}+{{{3|1}}}-1 &gt; 20 |{{
     #ifeq:{{padleft:|{{#expr: {{{3}}}+21}}|-{{{1}}} }}^|{{padleft:|21|-{{{1}}} }}{{{2}}}^|21+0*}}{{
     #ifeq:{{padleft:|{{#expr: {{{3}}}+22}}|-{{{1}}} }}^|{{padleft:|22|-{{{1}}} }}{{{2}}}^|22+0*}}{{
     #ifeq:{{padleft:|{{#expr: {{{3}}}+23}}|-{{{1}}} }}^|{{padleft:|23|-{{{1}}} }}{{{2}}}^|23+0*}}{{
     #ifeq:{{padleft:|{{#expr: {{{3}}}+24}}|-{{{1}}} }}^|{{padleft:|24|-{{{1}}} }}{{{2}}}^|24+0*}}{{
     #ifeq:{{padleft:|{{#expr: {{{3}}}+25}}|-{{{1}}} }}^|{{padleft:|25|-{{{1}}} }}{{{2}}}^|25+0*}} }}&lt;!--
 ----------------------------- Check to skip lengths &gt; 25
 --&gt;{{#ifexpr: {{{lenstr|15}}}+{{{3|1}}}-1 &gt; 25 |{{
     #ifeq:{{padleft:|{{#expr: {{{3}}}+26}}|-{{{1}}} }}^|{{padleft:|26|-{{{1}}} }}{{{2}}}^|26+0*}}{{
     #ifeq:{{padleft:|{{#expr: {{{3}}}+27}}|-{{{1}}} }}^|{{padleft:|27|-{{{1}}} }}{{{2}}}^|27+0*}}{{
     #ifeq:{{padleft:|{{#expr: {{{3}}}+28}}|-{{{1}}} }}^|{{padleft:|28|-{{{1}}} }}{{{2}}}^|28+0*}}{{
     #ifeq:{{padleft:|{{#expr: {{{3}}}+29}}|-{{{1}}} }}^|{{padleft:|29|-{{{1}}} }}{{{2}}}^|29+0*}}{{
     #ifeq:{{padleft:|{{#expr: {{{3}}}+30}}|-{{{1}}} }}^|{{padleft:|30|-{{{1}}} }}{{{2}}}^|30+0*}} }}&lt;!--
 ----------------------------- Check to skip lengths &gt; 30
 --&gt;{{#ifexpr: {{{lenstr|15}}}+{{{3|1}}}-1 &gt; 30 |{{
     #ifeq:{{padleft:|{{#expr: {{{3}}}+31}}|-{{{1}}} }}^|{{padleft:|31|-{{{1}}} }}{{{2}}}^|31+0*}}{{
     #ifeq:{{padleft:|{{#expr: {{{3}}}+32}}|-{{{1}}} }}^|{{padleft:|32|-{{{1}}} }}{{{2}}}^|32+0*}}{{
     #ifeq:{{padleft:|{{#expr: {{{3}}}+33}}|-{{{1}}} }}^|{{padleft:|33|-{{{1}}} }}{{{2}}}^|33+0*}}{{
     #ifeq:{{padleft:|{{#expr: {{{3}}}+34}}|-{{{1}}} }}^|{{padleft:|34|-{{{1}}} }}{{{2}}}^|34+0*}}{{
     #ifeq:{{padleft:|{{#expr: {{{3}}}+35}}|-{{{1}}} }}^|{{padleft:|35|-{{{1}}} }}{{{2}}}^|35+0*}} }}&lt;!--
 ----------------------------- Check to skip lengths &gt; 35
 --&gt;{{#ifexpr: {{{lenstr|15}}}+{{{3|1}}}-1 &gt; 35 |{{
     #ifeq:{{padleft:|{{#expr: {{{3}}}+36}}|-{{{1}}} }}^|{{padleft:|36|-{{{1}}} }}{{{2}}}^|36+0*}}{{
     #ifeq:{{padleft:|{{#expr: {{{3}}}+37}}|-{{{1}}} }}^|{{padleft:|37|-{{{1}}} }}{{{2}}}^|37+0*}}{{
     #ifeq:{{padleft:|{{#expr: {{{3}}}+38}}|-{{{1}}} }}^|{{padleft:|38|-{{{1}}} }}{{{2}}}^|38+0*}}{{
     #ifeq:{{padleft:|{{#expr: {{{3}}}+39}}|-{{{1}}} }}^|{{padleft:|39|-{{{1}}} }}{{{2}}}^|39+0*}}{{
     #ifeq:{{padleft:|{{#expr: {{{3}}}+40}}|-{{{1}}} }}^|{{padleft:|40|-{{{1}}} }}{{{2}}}^|40+0*}} }}&lt;!--
 ----------------------------- Check to skip lengths &gt; 40
 --&gt;{{#ifexpr: {{{lenstr|15}}}+{{{3|1}}}-1 &gt; 40 |{{
     #ifeq:{{padleft:|{{#expr: {{{3}}}+41}}|-{{{1}}} }}^|{{padleft:|41|-{{{1}}} }}{{{2}}}^|41+0*}}{{
     #ifeq:{{padleft:|{{#expr: {{{3}}}+42}}|-{{{1}}} }}^|{{padleft:|42|-{{{1}}} }}{{{2}}}^|42+0*}}{{
     #ifeq:{{padleft:|{{#expr: {{{3}}}+43}}|-{{{1}}} }}^|{{padleft:|43|-{{{1}}} }}{{{2}}}^|43+0*}}{{
     #ifeq:{{padleft:|{{#expr: {{{3}}}+44}}|-{{{1}}} }}^|{{padleft:|44|-{{{1}}} }}{{{2}}}^|44+0*}}{{
     #ifeq:{{padleft:|{{#expr: {{{3}}}+45}}|-{{{1}}} }}^|{{padleft:|45|-{{{1}}} }}{{{2}}}^|45+0*}} }}&lt;!--
 ---------------------- Check to skip lengths &gt; 45
 --&gt;{{#ifexpr: {{{lenstr|15}}}+{{{3|1}}}-1 &gt; 45 |{{
     #ifeq:{{padleft:|{{#expr: {{{3}}}+46}}|-{{{1}}} }}^|{{padleft:|46|-{{{1}}} }}{{{2}}}^|46+0*}}{{
     #ifeq:{{padleft:|{{#expr: {{{3}}}+47}}|-{{{1}}} }}^|{{padleft:|47|-{{{1}}} }}{{{2}}}^|47+0*}}{{
     #ifeq:{{padleft:|{{#expr: {{{3}}}+48}}|-{{{1}}} }}^|{{padleft:|48|-{{{1}}} }}{{{2}}}^|48+0*}}{{
     #ifeq:{{padleft:|{{#expr: {{{3}}}+49}}|-{{{1}}} }}^|{{padleft:|49|-{{{1}}} }}{{{2}}}^|49+0*}}{{
     #ifeq:{{padleft:|{{#expr: {{{3}}}+50}}|-{{{1}}} }}^|{{padleft:|50|-{{{1}}} }}{{{2}}}^|50+0*}}{{
     #ifeq:{{padleft:|{{#expr: {{{3}}}+51}}|-{{{1}}} }}^|{{padleft:|51|-{{{1}}} }}{{{2}}}^|51+0*}}{{
     #ifeq:{{padleft:|{{#expr: {{{3}}}+52}}|-{{{1}}} }}^|{{padleft:|52|-{{{1}}} }}{{{2}}}^|52+0*}}{{
     #ifeq:{{padleft:|{{#expr: {{{3}}}+53}}|-{{{1}}} }}^|{{padleft:|53|-{{{1}}} }}{{{2}}}^|53+0*}}{{
     #ifeq:{{padleft:|{{#expr: {{{3}}}+54}}|-{{{1}}} }}^|{{padleft:|54|-{{{1}}} }}{{{2}}}^|54+0*}}{{
     #ifeq:{{padleft:|{{#expr: {{{3}}}+55}}|-{{{1}}} }}^|{{padleft:|55|-{{{1}}} }}{{{2}}}^|55+0*}} }}&lt;!--
 ---------------------- Check to skip lengths &gt; 55
 --&gt;{{#ifexpr: {{{lenstr|15}}} &gt; 55 |{{
     #ifeq:{{padleft:|{{#expr: {{{3}}}+56}}|-{{{1}}} }}^|{{padleft:|56|-{{{1}}} }}{{{2}}}^|56+0*}}{{
     #ifeq:{{padleft:|{{#expr: {{{3}}}+57}}|-{{{1}}} }}^|{{padleft:|57|-{{{1}}} }}{{{2}}}^|57+0*}}{{
     #ifeq:{{padleft:|{{#expr: {{{3}}}+58}}|-{{{1}}} }}^|{{padleft:|58|-{{{1}}} }}{{{2}}}^|58+0*}}{{
     #ifeq:{{padleft:|{{#expr: {{{3}}}+59}}|-{{{1}}} }}^|{{padleft:|59|-{{{1}}} }}{{{2}}}^|59+0*}}{{
     #ifeq:{{padleft:|{{#expr: {{{3}}}+60}}|-{{{1}}} }}^|{{padleft:|60|-{{{1}}} }}{{{2}}}^|60+0*}}{{
     #ifeq:{{padleft:|{{#expr: {{{3}}}+61}}|-{{{1}}} }}^|{{padleft:|61|-{{{1}}} }}{{{2}}}^|61+0*}}{{
     #ifeq:{{padleft:|{{#expr: {{{3}}}+62}}|-{{{1}}} }}^|{{padleft:|62|-{{{1}}} }}{{{2}}}^|62+0*}}{{
     #ifeq:{{padleft:|{{#expr: {{{3}}}+63}}|-{{{1}}} }}^|{{padleft:|63|-{{{1}}} }}{{{2}}}^|63+0*}}{{
     #ifeq:{{padleft:|{{#expr: {{{3}}}+64}}|-{{{1}}} }}^|{{padleft:|64|-{{{1}}} }}{{{2}}}^|64+0*}}{{
     #ifeq:{{padleft:|{{#expr: {{{3}}}+65}}|-{{{1}}} }}^|{{padleft:|65|-{{{1}}} }}{{{2}}}^|65+0*}}{{
     #ifeq:{{padleft:|{{#expr: {{{3}}}+66}}|-{{{1}}} }}^|{{padleft:|66|-{{{1}}} }}{{{2}}}^|66+0*}}{{
     #ifeq:{{padleft:|{{#expr: {{{3}}}+67}}|-{{{1}}} }}^|{{padleft:|67|-{{{1}}} }}{{{2}}}^|67+0*}}{{
     #ifeq:{{padleft:|{{#expr: {{{3}}}+68}}|-{{{1}}} }}^|{{padleft:|68|-{{{1}}} }}{{{2}}}^|68+0*}}{{
     #ifeq:{{padleft:|{{#expr: {{{3}}}+69}}|-{{{1}}} }}^|{{padleft:|69|-{{{1}}} }}{{{2}}}^|69+0*}}{{
     #ifeq:{{padleft:|{{#expr: {{{3}}}+70}}|-{{{1}}} }}^|{{padleft:|70|-{{{1}}} }}{{{2}}}^|70+0*}}{{
     #ifeq:{{padleft:|{{#expr: {{{3}}}+71}}|-{{{1}}} }}^|{{padleft:|71|-{{{1}}} }}{{{2}}}^|71+0*}}{{
     #ifeq:{{padleft:|{{#expr: {{{3}}}+72}}|-{{{1}}} }}^|{{padleft:|72|-{{{1}}} }}{{{2}}}^|72+0*}}{{
     #ifeq:{{padleft:|{{#expr: {{{3}}}+73}}|-{{{1}}} }}^|{{padleft:|73|-{{{1}}} }}{{{2}}}^|73+0*}}{{
     #ifeq:{{padleft:|{{#expr: {{{3}}}+74}}|-{{{1}}} }}^|{{padleft:|74|-{{{1}}} }}{{{2}}}^|74+0*}}{{
     #ifeq:{{padleft:|{{#expr: {{{3}}}+75}}|-{{{1}}} }}^|{{padleft:|75|-{{{1}}} }}{{{2}}}^|75+0*}}{{
     #ifeq:{{padleft:|{{#expr: {{{3}}}+76}}|-{{{1}}} }}^|{{padleft:|76|-{{{1}}} }}{{{2}}}^|76+0*}}{{
     #ifeq:{{padleft:|{{#expr: {{{3}}}+77}}|-{{{1}}} }}^|{{padleft:|77|-{{{1}}} }}{{{2}}}^|77+0*}}{{
     #ifeq:{{padleft:|{{#expr: {{{3}}}+78}}|-{{{1}}} }}^|{{padleft:|78|-{{{1}}} }}{{{2}}}^|78+0*}}{{
     #ifeq:{{padleft:|{{#expr: {{{3}}}+79}}|-{{{1}}} }}^|{{padleft:|79|-{{{1}}} }}{{{2}}}^|79+0*}}{{
     #ifeq:{{padleft:|{{#expr: {{{3}}}+80}}|-{{{1}}} }}^|{{padleft:|80|-{{{1}}} }}{{{2}}}^|80+0*}}{{
     #ifeq:{{padleft:|{{#expr: {{{3}}}+81}}|-{{{1}}} }}^|{{padleft:|81|-{{{1}}} }}{{{2}}}^|81+0*}}{{
     #ifeq:{{padleft:|{{#expr: {{{3}}}+82}}|-{{{1}}} }}^|{{padleft:|82|-{{{1}}} }}{{{2}}}^|82+0*}}{{
     #ifeq:{{padleft:|{{#expr: {{{3}}}+83}}|-{{{1}}} }}^|{{padleft:|83|-{{{1}}} }}{{{2}}}^|83+0*}}{{
     #ifeq:{{padleft:|{{#expr: {{{3}}}+84}}|-{{{1}}} }}^|{{padleft:|84|-{{{1}}} }}{{{2}}}^|84+0*}}{{
     #ifeq:{{padleft:|{{#expr: {{{3}}}+85}}|-{{{1}}} }}^|{{padleft:|85|-{{{1}}} }}{{{2}}}^|85+0*}}{{
     #ifeq:{{padleft:|{{#expr: {{{3}}}+86}}|-{{{1}}} }}^|{{padleft:|86|-{{{1}}} }}{{{2}}}^|86+0*}}{{
     #ifeq:{{padleft:|{{#expr: {{{3}}}+87}}|-{{{1}}} }}^|{{padleft:|87|-{{{1}}} }}{{{2}}}^|87+0*}}{{
     #ifeq:{{padleft:|{{#expr: {{{3}}}+88}}|-{{{1}}} }}^|{{padleft:|88|-{{{1}}} }}{{{2}}}^|88+0*}}{{
     #ifeq:{{padleft:|{{#expr: {{{3}}}+89}}|-{{{1}}} }}^|{{padleft:|89|-{{{1}}} }}{{{2}}}^|89+0*}}{{
     #ifeq:{{padleft:|{{#expr: {{{3}}}+90}}|-{{{1}}} }}^|{{padleft:|90|-{{{1}}} }}{{{2}}}^|90+0*}}{{
     #ifeq:{{padleft:|{{#expr: {{{3}}}+91}}|-{{{1}}} }}^|{{padleft:|91|-{{{1}}} }}{{{2}}}^|91+0*}}{{
     #ifeq:{{padleft:|{{#expr: {{{3}}}+92}}|-{{{1}}} }}^|{{padleft:|92|-{{{1}}} }}{{{2}}}^|92+0*}}{{
     #ifeq:{{padleft:|{{#expr: {{{3}}}+93}}|-{{{1}}} }}^|{{padleft:|93|-{{{1}}} }}{{{2}}}^|93+0*}}{{
     #ifeq:{{padleft:|{{#expr: {{{3}}}+94}}|-{{{1}}} }}^|{{padleft:|94|-{{{1}}} }}{{{2}}}^|94+0*}}{{
     #ifeq:{{padleft:|{{#expr: {{{3}}}+95}}|-{{{1}}} }}^|{{padleft:|95|-{{{1}}} }}{{{2}}}^|95+0*}}{{
     #ifeq:{{padleft:|{{#expr: {{{3}}}+96}}|-{{{1}}} }}^|{{padleft:|96|-{{{1}}} }}{{{2}}}^|96+0*}}{{
     #ifeq:{{padleft:|{{#expr: {{{3}}}+97}}|-{{{1}}} }}^|{{padleft:|97|-{{{1}}} }}{{{2}}}^|97+0*}}{{
     #ifeq:{{padleft:|{{#expr: {{{3}}}+98}}|-{{{1}}} }}^|{{padleft:|98|-{{{1}}} }}{{{2}}}^|98+0*}}{{
     #ifeq:{{padleft:|{{#expr: {{{3}}}+99}}|-{{{1}}} }}^|{{padleft:|99|-{{{1}}} }}{{{2}}}^|99+0*}}
 }}0}}&lt;noinclude&gt;&lt;!--endif lenstr &gt; 55, with &quot;0&quot; &amp; endexpr
 --------------------------------------------------------------
 --NOTES
 --    [ These comments are skipped by &lt;noinclude&gt; so they will
 --      be omitted &amp; not sent in a formatted Internet page. ]
 --
 -- NOTE A1: This template searches inside base string {1}, up
 --      to length {lenstr}, to match string {2} of length {3},
 --      as an embedded substring. In various groups, limited by
 --      {lenstr}, it compares string {1} truncated '{3}+n' long
 --      against both string {1} truncated to n with string {2}
 --      appended, in the comparison.
 --
 -- NOTE N2: This template was designed to use minimal levels
 --      as 5, to avoid the &quot;expansion depth limit&quot; when used
 --      in very large templates. By comparison, {str_find}
 --      was using over 18 levels of 40 total, during 2010.
 --
 -- NOTE S3: The speed of search depends on the length parameter
 --      {lenstr}, where lenstr &gt; 10 will start #2 of 9 phases
 --      of comparisons, because 16% of strings are &lt; 11 long:
 --      lenstr &gt; 10 will search the 84% of strings over 10 long,
 --      lenstr &gt; 15 will search the 58% of strings over 15 long,
 --      lenstr &gt; 20 will search the 32% of strings over 20,
 --      lenstr &gt; 25 will search the 16% of strings over 25,
 --      lenstr &gt; 30 will search the 8% of strings over 30,
 --      lenstr &gt; 35 will search the 4% of strings over 35,
 --      lenstr &gt; 40 will search the 2% of strings over 40,
 --      lenstr &gt; 45 will search 1.1% of strings over 45 long,
 --      lenstr &gt; 55 searches rare 0.3% of strings over 55 long.
 --      The exact check of length is {{{lenstr}}}+{{{3}}}-1 &gt; n
 --      to also stop if the search string is too long to match.
 --
 --------------------------------------------------------------
 --HISTORY:
 --28Dec10 Created to find a string in another by unnested logic.
 --28Dec10 Put NOTES comments to explain template coding.
 --28Dec10 Put HISTORY comments to log major changes (not typos).
 --29Jan11 New {lenstr} for search 3x faster, stopping at length.
 --29Jan11 Set default search up to 15 long but allow lenstr=99.
 --31Jan11 Check lenstr &gt; 55 to skip searching columns 56-99.
 --05Feb11 Check lenstr &gt; 10, 15, 20, 25, 30... as faster search.
 --
 --&gt;
 {{documentation}}
 
 [[Category:Wikipedia formatting and function templates]]
 [[Category:Templates with minimal expansion depth]]