Advertisement
BigETI

strfind2 und strlen2

Sep 7th, 2011
305
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 13.53 KB | None | 0 0
  1. //Selfmade strfind (Wie so eine Funktion geschrieben worden sein kann)
  2. strfind2(const string[], const sub[], bool:ignorecase=false, pos=0)
  3. {
  4.     new f_result = -1, bool:f_complete, tpos = 0;
  5.     for(new i = pos; i < strlen2(string); i++)
  6.     {
  7.         if(!ignorecase)
  8.         {
  9.             if(string[i] == sub[tpos])
  10.             {
  11.                 if(f_result == -1) f_result = i;
  12.                 tpos++;
  13.             }
  14.             else
  15.             {
  16.                 f_result = -1;
  17.                 tpos = 0;
  18.             }
  19.         }
  20.         else
  21.         {
  22.             switch(string[i])
  23.             {
  24.                 case 'a','A':
  25.                 {
  26.                     if(sub[tpos] == 'a' || sub[tpos] == 'A')
  27.                     {
  28.                         if(f_result == -1) f_result = i;
  29.                         tpos++;
  30.                     }
  31.                     else
  32.                     {
  33.                         f_result = -1;
  34.                         tpos = 0;
  35.                     }
  36.                 }
  37.                 case 'à','À':
  38.                 {
  39.                     if(sub[tpos] == 'à' || sub[tpos] == 'À')
  40.                     {
  41.                         if(f_result == -1) f_result = i;
  42.                         tpos++;
  43.                     }
  44.                     else
  45.                     {
  46.                         f_result = -1;
  47.                         tpos = 0;
  48.                     }
  49.                 }
  50.                 case 'á','Á':
  51.                 {
  52.                     if(sub[tpos] == 'á' || sub[tpos] == 'Á')
  53.                     {
  54.                         if(f_result == -1) f_result = i;
  55.                         tpos++;
  56.                     }
  57.                     else
  58.                     {
  59.                         f_result = -1;
  60.                         tpos = 0;
  61.                     }
  62.                 }
  63.                 case 'â','Â':
  64.                 {
  65.                     if(sub[tpos] == 'â' || sub[tpos] == 'Â')
  66.                     {
  67.                         if(f_result == -1) f_result = i;
  68.                         tpos++;
  69.                     }
  70.                     else
  71.                     {
  72.                         f_result = -1;
  73.                         tpos = 0;
  74.                     }
  75.                 }
  76.                 case 'ã','Ã':
  77.                 {
  78.                     if(sub[tpos] == 'ã' || sub[tpos] == 'Ã')
  79.                     {
  80.                         if(f_result == -1) f_result = i;
  81.                         tpos++;
  82.                     }
  83.                     else
  84.                     {
  85.                         f_result = -1;
  86.                         tpos = 0;
  87.                     }
  88.                 }
  89.                 case 'ä','Ä':
  90.                 {
  91.                     if(sub[tpos] == 'ä' || sub[tpos] == 'Ä')
  92.                     {
  93.                         if(f_result == -1) f_result = i;
  94.                         tpos++;
  95.                     }
  96.                     else
  97.                     {
  98.                         f_result = -1;
  99.                         tpos = 0;
  100.                     }
  101.                 }
  102.                 case 'å','Å':
  103.                 {
  104.                     if(sub[tpos] == 'å' || sub[tpos] == 'Å')
  105.                     {
  106.                         if(f_result == -1) f_result = i;
  107.                         tpos++;
  108.                     }
  109.                     else
  110.                     {
  111.                         f_result = -1;
  112.                         tpos = 0;
  113.                     }
  114.                 }
  115.                 case 'æ','Æ':
  116.                 {
  117.                     if(sub[tpos] == 'æ' || sub[tpos] == 'Æ')
  118.                     {
  119.                         if(f_result == -1) f_result = i;
  120.                         tpos++;
  121.                     }
  122.                     else
  123.                     {
  124.                         f_result = -1;
  125.                         tpos = 0;
  126.                     }
  127.                 }
  128.                 case 'b','B':
  129.                 {
  130.                     if(sub[tpos] == 'b' || sub[tpos] == 'B')
  131.                     {
  132.                         if(f_result == -1) f_result = i;
  133.                         tpos++;
  134.                     }
  135.                     else
  136.                     {
  137.                         f_result = -1;
  138.                         tpos = 0;
  139.                     }
  140.                 }
  141.                 case 'c','C':
  142.                 {
  143.                     if(sub[tpos] == 'c' || sub[tpos] == 'C')
  144.                     {
  145.                         if(f_result == -1) f_result = i;
  146.                         tpos++;
  147.                     }
  148.                     else
  149.                     {
  150.                         f_result = -1;
  151.                         tpos = 0;
  152.                     }
  153.                 }
  154.                 case 'ç','Ç':
  155.                 {
  156.                     if(sub[tpos] == 'ç' || sub[tpos] == 'Ç')
  157.                     {
  158.                         if(f_result == -1) f_result = i;
  159.                         tpos++;
  160.                     }
  161.                     else
  162.                     {
  163.                         f_result = -1;
  164.                         tpos = 0;
  165.                     }
  166.                 }
  167.                 case 'd','D':
  168.                 {
  169.                     if(sub[tpos] == 'd' || sub[tpos] == 'D')
  170.                     {
  171.                         if(f_result == -1) f_result = i;
  172.                         tpos++;
  173.                     }
  174.                     else
  175.                     {
  176.                         f_result = -1;
  177.                         tpos = 0;
  178.                     }
  179.                 }
  180.                 case 'e','E':
  181.                 {
  182.                     if(sub[tpos] == 'e' || sub[tpos] == 'E')
  183.                     {
  184.                         if(f_result == -1) f_result = i;
  185.                         tpos++;
  186.                     }
  187.                     else
  188.                     {
  189.                         f_result = -1;
  190.                         tpos = 0;
  191.                     }
  192.                 }
  193.                 case 'è','È':
  194.                 {
  195.                     if(sub[tpos] == 'è' || sub[tpos] == 'È')
  196.                     {
  197.                         if(f_result == -1) f_result = i;
  198.                         tpos++;
  199.                     }
  200.                     else
  201.                     {
  202.                         f_result = -1;
  203.                         tpos = 0;
  204.                     }
  205.                 }
  206.                 case 'é','É':
  207.                 {
  208.                     if(sub[tpos] == 'é' || sub[tpos] == 'É')
  209.                     {
  210.                         if(f_result == -1) f_result = i;
  211.                         tpos++;
  212.                     }
  213.                     else
  214.                     {
  215.                         f_result = -1;
  216.                         tpos = 0;
  217.                     }
  218.                 }
  219.                 case 'ê','Ê':
  220.                 {
  221.                     if(sub[tpos] == 'ê' || sub[tpos] == 'Ê')
  222.                     {
  223.                         if(f_result == -1) f_result = i;
  224.                         tpos++;
  225.                     }
  226.                     else
  227.                     {
  228.                         f_result = -1;
  229.                         tpos = 0;
  230.                     }
  231.                 }
  232.                 case 'ë','Ë':
  233.                 {
  234.                     if(sub[tpos] == 'ë' || sub[tpos] == 'Ë')
  235.                     {
  236.                         if(f_result == -1) f_result = i;
  237.                         tpos++;
  238.                     }
  239.                     else
  240.                     {
  241.                         f_result = -1;
  242.                         tpos = 0;
  243.                     }
  244.                 }
  245.                 case 'f','F':
  246.                 {
  247.                     if(sub[tpos] == 'f' || sub[tpos] == 'F')
  248.                     {
  249.                         if(f_result == -1) f_result = i;
  250.                         tpos++;
  251.                     }
  252.                     else
  253.                     {
  254.                         f_result = -1;
  255.                         tpos = 0;
  256.                     }
  257.                 }
  258.                 case 'g','G':
  259.                 {
  260.                     if(sub[tpos] == 'g' || sub[tpos] == 'G')
  261.                     {
  262.                         if(f_result == -1) f_result = i;
  263.                         tpos++;
  264.                     }
  265.                     else
  266.                     {
  267.                         f_result = -1;
  268.                         tpos = 0;
  269.                     }
  270.                 }
  271.                 //Sorry, weiches "G" gibt es in der ANSI liste nicht. (Es wird aber in Türkish benutzt.)
  272.                 case 'h','H':
  273.                 {
  274.                     if(sub[tpos] == 'h' || sub[tpos] == 'H')
  275.                     {
  276.                         if(f_result == -1) f_result = i;
  277.                         tpos++;
  278.                     }
  279.                     else
  280.                     {
  281.                         f_result = -1;
  282.                         tpos = 0;
  283.                     }
  284.                 }
  285.                 case 'i','I': //In Türkisch sind es zwei verschiedene Buchtaben dabei sind die beiden Buchtaben in Latein gleich.
  286.                 {
  287.                     if(sub[tpos] == 'i' || sub[tpos] == 'I')
  288.                     {
  289.                         if(f_result == -1) f_result = i;
  290.                         tpos++;
  291.                     }
  292.                     else
  293.                     {
  294.                         f_result = -1;
  295.                         tpos = 0;
  296.                     }
  297.                 }
  298.                 case 'ì','Ì':
  299.                 {
  300.                     if(sub[tpos] == 'ì' || sub[tpos] == 'Ì')
  301.                     {
  302.                         if(f_result == -1) f_result = i;
  303.                         tpos++;
  304.                     }
  305.                     else
  306.                     {
  307.                         f_result = -1;
  308.                         tpos = 0;
  309.                     }
  310.                 }
  311.                 case 'í','Í':
  312.                 {
  313.                     if(sub[tpos] == 'í' || sub[tpos] == 'Í')
  314.                     {
  315.                         if(f_result == -1) f_result = i;
  316.                         tpos++;
  317.                     }
  318.                     else
  319.                     {
  320.                         f_result = -1;
  321.                         tpos = 0;
  322.                     }
  323.                 }
  324.                 case 'î','Î':
  325.                 {
  326.                     if(sub[tpos] == 'î' || sub[tpos] == 'Î')
  327.                     {
  328.                         if(f_result == -1) f_result = i;
  329.                         tpos++;
  330.                     }
  331.                     else
  332.                     {
  333.                         f_result = -1;
  334.                         tpos = 0;
  335.                     }
  336.                 }
  337.                 case 'ï','Ï':
  338.                 {
  339.                     if(sub[tpos] == 'ï' || sub[tpos] == 'Ï')
  340.                     {
  341.                         if(f_result == -1) f_result = i;
  342.                         tpos++;
  343.                     }
  344.                     else
  345.                     {
  346.                         f_result = -1;
  347.                         tpos = 0;
  348.                     }
  349.                 }
  350.                 case 'j','J':
  351.                 {
  352.                     if(sub[tpos] == 'j' || sub[tpos] == 'J')
  353.                     {
  354.                         if(f_result == -1) f_result = i;
  355.                         tpos++;
  356.                     }
  357.                     else
  358.                     {
  359.                         f_result = -1;
  360.                         tpos = 0;
  361.                     }
  362.                 }
  363.                 case 'k','K':
  364.                 {
  365.                     if(sub[tpos] == 'k' || sub[tpos] == 'K')
  366.                     {
  367.                         if(f_result == -1) f_result = i;
  368.                         tpos++;
  369.                     }
  370.                     else
  371.                     {
  372.                         f_result = -1;
  373.                         tpos = 0;
  374.                     }
  375.                 }
  376.                 case 'l','L':
  377.                 {
  378.                     if(sub[tpos] == 'l' || sub[tpos] == 'L')
  379.                     {
  380.                         if(f_result == -1) f_result = i;
  381.                         tpos++;
  382.                     }
  383.                     else
  384.                     {
  385.                         f_result = -1;
  386.                         tpos = 0;
  387.                     }
  388.                 }
  389.                 case 'm','M':
  390.                 {
  391.                     if(sub[tpos] == 'm' || sub[tpos] == 'M')
  392.                     {
  393.                         if(f_result == -1) f_result = i;
  394.                         tpos++;
  395.                     }
  396.                     else
  397.                     {
  398.                         f_result = -1;
  399.                         tpos = 0;
  400.                     }
  401.                 }
  402.                 case 'n','N':
  403.                 {
  404.                     if(sub[tpos] == 'n' || sub[tpos] == 'N')
  405.                     {
  406.                         if(f_result == -1) f_result = i;
  407.                         tpos++;
  408.                     }
  409.                     else
  410.                     {
  411.                         f_result = -1;
  412.                         tpos = 0;
  413.                     }
  414.                 }
  415.                 case 'ñ','Ñ':
  416.                 {
  417.                     if(sub[tpos] == 'ñ' || sub[tpos] == 'Ñ')
  418.                     {
  419.                         if(f_result == -1) f_result = i;
  420.                         tpos++;
  421.                     }
  422.                     else
  423.                     {
  424.                         f_result = -1;
  425.                         tpos = 0;
  426.                     }
  427.                 }
  428.                 case 'o','O':
  429.                 {
  430.                     if(sub[tpos] == 'o' || sub[tpos] == 'O')
  431.                     {
  432.                         if(f_result == -1) f_result = i;
  433.                         tpos++;
  434.                     }
  435.                     else
  436.                     {
  437.                         f_result = -1;
  438.                         tpos = 0;
  439.                     }
  440.                 }
  441.                 case 'ò','Ò':
  442.                 {
  443.                     if(sub[tpos] == 'ò' || sub[tpos] == 'Ò')
  444.                     {
  445.                         if(f_result == -1) f_result = i;
  446.                         tpos++;
  447.                     }
  448.                     else
  449.                     {
  450.                         f_result = -1;
  451.                         tpos = 0;
  452.                     }
  453.                 }
  454.                 case 'ó','Ó':
  455.                 {
  456.                     if(sub[tpos] == 'ó' || sub[tpos] == 'Ó')
  457.                     {
  458.                         if(f_result == -1) f_result = i;
  459.                         tpos++;
  460.                     }
  461.                     else
  462.                     {
  463.                         f_result = -1;
  464.                         tpos = 0;
  465.                     }
  466.                 }
  467.                 case 'ô','Ô':
  468.                 {
  469.                     if(sub[tpos] == 'ô' || sub[tpos] == 'Ô')
  470.                     {
  471.                         if(f_result == -1) f_result = i;
  472.                         tpos++;
  473.                     }
  474.                     else
  475.                     {
  476.                         f_result = -1;
  477.                         tpos = 0;
  478.                     }
  479.                 }
  480.                 case 'õ','Õ':
  481.                 {
  482.                     if(sub[tpos] == 'õ' || sub[tpos] == 'Õ')
  483.                     {
  484.                         if(f_result == -1) f_result = i;
  485.                         tpos++;
  486.                     }
  487.                     else
  488.                     {
  489.                         f_result = -1;
  490.                         tpos = 0;
  491.                     }
  492.                 }
  493.                 case 'ö','Ö':
  494.                 {
  495.                     if(sub[tpos] == 'ö' || sub[tpos] == 'Ö')
  496.                     {
  497.                         if(f_result == -1) f_result = i;
  498.                         tpos++;
  499.                     }
  500.                     else
  501.                     {
  502.                         f_result = -1;
  503.                         tpos = 0;
  504.                     }
  505.                 }
  506.                 case 'œ','Œ':
  507.                 {
  508.                     if(sub[tpos] == 'œ' || sub[tpos] == 'Œ')
  509.                     {
  510.                         if(f_result == -1) f_result = i;
  511.                         tpos++;
  512.                     }
  513.                     else
  514.                     {
  515.                         f_result = -1;
  516.                         tpos = 0;
  517.                     }
  518.                 }
  519.                 case 'ø','Ø':
  520.                 {
  521.                     if(sub[tpos] == 'ø' || sub[tpos] == 'Ø')
  522.                     {
  523.                         if(f_result == -1) f_result = i;
  524.                         tpos++;
  525.                     }
  526.                     else
  527.                     {
  528.                         f_result = -1;
  529.                         tpos = 0;
  530.                     }
  531.                 }
  532.                 case 'p','P':
  533.                 {
  534.                     if(sub[tpos] == 'p' || sub[tpos] == 'P')
  535.                     {
  536.                         if(f_result == -1) f_result = i;
  537.                         tpos++;
  538.                     }
  539.                     else
  540.                     {
  541.                         f_result = -1;
  542.                         tpos = 0;
  543.                     }
  544.                 }
  545.                 case 'Þ','þ':
  546.                 {
  547.                     if(sub[tpos] == 'Þ' || sub[tpos] == 'þ')
  548.                     {
  549.                         if(f_result == -1) f_result = i;
  550.                         tpos++;
  551.                     }
  552.                     else
  553.                     {
  554.                         f_result = -1;
  555.                         tpos = 0;
  556.                     }
  557.                 }
  558.                 case 'q','Q':
  559.                 {
  560.                     if(sub[tpos] == 'q' || sub[tpos] == 'Q')
  561.                     {
  562.                         if(f_result == -1) f_result = i;
  563.                         tpos++;
  564.                     }
  565.                     else
  566.                     {
  567.                         f_result = -1;
  568.                         tpos = 0;
  569.                     }
  570.                 }
  571.                 case 'r','R':
  572.                 {
  573.                     if(sub[tpos] == 'r' || sub[tpos] == 'R')
  574.                     {
  575.                         if(f_result == -1) f_result = i;
  576.                         tpos++;
  577.                     }
  578.                     else
  579.                     {
  580.                         f_result = -1;
  581.                         tpos = 0;
  582.                     }
  583.                 }
  584.                 case 's','S':
  585.                 {
  586.                     if(sub[tpos] == 's' || sub[tpos] == 'S')
  587.                     {
  588.                         if(f_result == -1) f_result = i;
  589.                         tpos++;
  590.                     }
  591.                     else
  592.                     {
  593.                         f_result = -1;
  594.                         tpos = 0;
  595.                     }
  596.                 }
  597.                 case 'š','Š':
  598.                 {
  599.                     if(sub[tpos] == 'š' || sub[tpos] == 'Š')
  600.                     {
  601.                         if(f_result == -1) f_result = i;
  602.                         tpos++;
  603.                     }
  604.                     else
  605.                     {
  606.                         f_result = -1;
  607.                         tpos = 0;
  608.                     }
  609.                 }
  610.                 case 't','T':
  611.                 {
  612.                     if(sub[tpos] == 't' || sub[tpos] == 'T')
  613.                     {
  614.                         if(f_result == -1) f_result = i;
  615.                         tpos++;
  616.                     }
  617.                     else
  618.                     {
  619.                         f_result = -1;
  620.                         tpos = 0;
  621.                     }
  622.                 }
  623.                 case 'u','U':
  624.                 {
  625.                     if(sub[tpos] == 'u' || sub[tpos] == 'U')
  626.                     {
  627.                         if(f_result == -1) f_result = i;
  628.                         tpos++;
  629.                     }
  630.                     else
  631.                     {
  632.                         f_result = -1;
  633.                         tpos = 0;
  634.                     }
  635.                 }
  636.                 case 'ù','Ù':
  637.                 {
  638.                     if(sub[tpos] == 'ù' || sub[tpos] == 'Ù')
  639.                     {
  640.                         if(f_result == -1) f_result = i;
  641.                         tpos++;
  642.                     }
  643.                     else
  644.                     {
  645.                         f_result = -1;
  646.                         tpos = 0;
  647.                     }
  648.                 }
  649.                 case 'ú','Ú':
  650.                 {
  651.                     if(sub[tpos] == 'ú' || sub[tpos] == 'Ú')
  652.                     {
  653.                         if(f_result == -1) f_result = i;
  654.                         tpos++;
  655.                     }
  656.                     else
  657.                     {
  658.                         f_result = -1;
  659.                         tpos = 0;
  660.                     }
  661.                 }
  662.                 case 'û','Û':
  663.                 {
  664.                     if(sub[tpos] == 'û' || sub[tpos] == 'Û')
  665.                     {
  666.                         if(f_result == -1) f_result = i;
  667.                         tpos++;
  668.                     }
  669.                     else
  670.                     {
  671.                         f_result = -1;
  672.                         tpos = 0;
  673.                     }
  674.                 }
  675.                 case 'ü','Ü':
  676.                 {
  677.                     if(sub[tpos] == 'ü' || sub[tpos] == 'Ü')
  678.                     {
  679.                         if(f_result == -1) f_result = i;
  680.                         tpos++;
  681.                     }
  682.                     else
  683.                     {
  684.                         f_result = -1;
  685.                         tpos = 0;
  686.                     }
  687.                 }
  688.                 case 'v','V':
  689.                 {
  690.                     if(sub[tpos] == 'v' || sub[tpos] == 'V')
  691.                     {
  692.                         if(f_result == -1) f_result = i;
  693.                         tpos++;
  694.                     }
  695.                     else
  696.                     {
  697.                         f_result = -1;
  698.                         tpos = 0;
  699.                     }
  700.                 }
  701.                 case 'w','W':
  702.                 {
  703.                     if(sub[tpos] == 'w' || sub[tpos] == 'W')
  704.                     {
  705.                         if(f_result == -1) f_result = i;
  706.                         tpos++;
  707.                     }
  708.                     else
  709.                     {
  710.                         f_result = -1;
  711.                         tpos = 0;
  712.                     }
  713.                 }
  714.                 case 'x','X':
  715.                 {
  716.                     if(sub[tpos] == 'x' || sub[tpos] == 'X')
  717.                     {
  718.                         if(f_result == -1) f_result = i;
  719.                         tpos++;
  720.                     }
  721.                     else
  722.                     {
  723.                         f_result = -1;
  724.                         tpos = 0;
  725.                     }
  726.                 }
  727.                 case 'y','Y':
  728.                 {
  729.                     if(sub[tpos] == 'y' || sub[tpos] == 'Y')
  730.                     {
  731.                         if(f_result == -1) f_result = i;
  732.                         tpos++;
  733.                     }
  734.                     else
  735.                     {
  736.                         f_result = -1;
  737.                         tpos = 0;
  738.                     }
  739.                 }
  740.                 case 'ý','Ý':
  741.                 {
  742.                     if(sub[tpos] == 'ý' || sub[tpos] == 'Ý')
  743.                     {
  744.                         if(f_result == -1) f_result = i;
  745.                         tpos++;
  746.                     }
  747.                     else
  748.                     {
  749.                         f_result = -1;
  750.                         tpos = 0;
  751.                     }
  752.                 }
  753.                 case 'ÿ','Ÿ':
  754.                 {
  755.                     if(sub[tpos] == 'ÿ' || sub[tpos] == 'Ÿ')
  756.                     {
  757.                         if(f_result == -1) f_result = i;
  758.                         tpos++;
  759.                     }
  760.                     else
  761.                     {
  762.                         f_result = -1;
  763.                         tpos = 0;
  764.                     }
  765.                 }
  766.                 case 'z','Z':
  767.                 {
  768.                     if(sub[tpos] == 'z' || sub[tpos] == 'Z')
  769.                     {
  770.                         if(f_result == -1) f_result = i;
  771.                         tpos++;
  772.                     }
  773.                     else
  774.                     {
  775.                         f_result = -1;
  776.                         tpos = 0;
  777.                     }
  778.                 }
  779.                 case 'ž','Ž':
  780.                 {
  781.                     if(sub[tpos] == 'ž' || sub[tpos] == 'Ž')
  782.                     {
  783.                         if(f_result == -1) f_result = i;
  784.                         tpos++;
  785.                     }
  786.                     else
  787.                     {
  788.                         f_result = -1;
  789.                         tpos = 0;
  790.                     }
  791.                 }
  792.             }
  793.         }
  794.         if(tpos == strlen2(sub))
  795.         {
  796.             f_complete = true;
  797.             break;
  798.         }
  799.     }
  800.     if(!f_complete) f_result = -1;
  801.     return f_result;
  802. }
  803.  
  804. strlen2(const string[])
  805. {
  806.     new strlenght = 0;
  807.     while(string[strlenght] != 0) strlenght++;
  808.     return strlenght;
  809. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement