Confirm the ending of a string“Rotating the string” optimizationSplit string by character in JavaChanging the prototype of the String objectSearch string for a substring - indexOfTest if a string is a palindromeIs the string a pangram?Finding the Longest Word in a StringCoding Challenge: Return The Smaller String

Where can I find vomiting people?

What does a Light weapon mean mechanically?

Make 1998 using the least possible digits 8

Why do sellers care about down payments?

Have there been any countries that voted themselves out of existence?

Is there a reliable way to hide/convey a message in vocal expressions (speech, song,...)

Were Roman public roads build by private companies?

Splice or replace

Writing a love interest for my hero

Are there any non-WEB re-implementation of TeX Core in recent years?

How are chord ratios developed exactly?

Eccentric keepers

Will replacing a fake visa with a different fake visa cause me problems when applying for a legal study permit?

Is English tonal for some words, like "permit"?

The Planck constant for mathematicians

How seriously should I take a CBP interview where I was told I have a red flag and could only stay for 30 days?

I was promised a work PC but still awaiting approval 3 months later so using my own laptop - Is it fair to ask employer for laptop insurance?

Modify width of first column in file with a variable number of fields, using awk

Can I toggle Do Not Disturb on/off on my Mac as easily as I can on my iPhone?

Confirm the ending of a string

Random point on a sphere

Do ibuprofen or paracetamol cause hearing loss?

Uncovering the Accelerated Dragon opening

What exactly is a marshrutka (маршрутка)?



Confirm the ending of a string


“Rotating the string” optimizationSplit string by character in JavaChanging the prototype of the String objectSearch string for a substring - indexOfTest if a string is a palindromeIs the string a pangram?Finding the Longest Word in a StringCoding Challenge: Return The Smaller String






.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty margin-bottom:0;








2












$begingroup$


Challenge:




Check if a string (first argument, str) ends with the given target
string (second argument, target).



This challenge can be solved with the .endsWith() method. But for the
purpose of this challenge, do not use it.




I would like to especially have my solution critiqued.



function confirmEnding(str, target)
let lengthOfString = str.length;
let lengthOfTarget = target.length;
let subtractLengths = lengthOfString - lengthOfTarget;
let lastIndexOfString = str.lastIndexOf(target);

if(str.includes(target) === true)
if(lastIndexOfString === subtractLengths)
return true;

else
return false;


else
return false;




Test Cases:



confirmEnding("Bastian", "n") should return true.
Passed
confirmEnding("Congratulation", "on") should return true.
Passed
confirmEnding("Connor", "n") should return false.
Passed
confirmEnding("Walking on water and developing software from a specification are easy if both are frozen", "specification") should return false.
Passed
confirmEnding("He has to give me a new name", "name") should return true.
Passed
confirmEnding("Open sesame", "same") should return true.
Passed
confirmEnding("Open sesame", "pen") should return false.
Passed
confirmEnding("Open sesame", "game") should return false.
Passed
confirmEnding("If you want to save our world, you must hurry. We dont know how much longer we can withstand the nothing", "mountain") should return false.
Passed
confirmEnding("Abstraction", "action") should return true.









share|improve this question











$endgroup$




















    2












    $begingroup$


    Challenge:




    Check if a string (first argument, str) ends with the given target
    string (second argument, target).



    This challenge can be solved with the .endsWith() method. But for the
    purpose of this challenge, do not use it.




    I would like to especially have my solution critiqued.



    function confirmEnding(str, target)
    let lengthOfString = str.length;
    let lengthOfTarget = target.length;
    let subtractLengths = lengthOfString - lengthOfTarget;
    let lastIndexOfString = str.lastIndexOf(target);

    if(str.includes(target) === true)
    if(lastIndexOfString === subtractLengths)
    return true;

    else
    return false;


    else
    return false;




    Test Cases:



    confirmEnding("Bastian", "n") should return true.
    Passed
    confirmEnding("Congratulation", "on") should return true.
    Passed
    confirmEnding("Connor", "n") should return false.
    Passed
    confirmEnding("Walking on water and developing software from a specification are easy if both are frozen", "specification") should return false.
    Passed
    confirmEnding("He has to give me a new name", "name") should return true.
    Passed
    confirmEnding("Open sesame", "same") should return true.
    Passed
    confirmEnding("Open sesame", "pen") should return false.
    Passed
    confirmEnding("Open sesame", "game") should return false.
    Passed
    confirmEnding("If you want to save our world, you must hurry. We dont know how much longer we can withstand the nothing", "mountain") should return false.
    Passed
    confirmEnding("Abstraction", "action") should return true.









    share|improve this question











    $endgroup$
















      2












      2








      2





      $begingroup$


      Challenge:




      Check if a string (first argument, str) ends with the given target
      string (second argument, target).



      This challenge can be solved with the .endsWith() method. But for the
      purpose of this challenge, do not use it.




      I would like to especially have my solution critiqued.



      function confirmEnding(str, target)
      let lengthOfString = str.length;
      let lengthOfTarget = target.length;
      let subtractLengths = lengthOfString - lengthOfTarget;
      let lastIndexOfString = str.lastIndexOf(target);

      if(str.includes(target) === true)
      if(lastIndexOfString === subtractLengths)
      return true;

      else
      return false;


      else
      return false;




      Test Cases:



      confirmEnding("Bastian", "n") should return true.
      Passed
      confirmEnding("Congratulation", "on") should return true.
      Passed
      confirmEnding("Connor", "n") should return false.
      Passed
      confirmEnding("Walking on water and developing software from a specification are easy if both are frozen", "specification") should return false.
      Passed
      confirmEnding("He has to give me a new name", "name") should return true.
      Passed
      confirmEnding("Open sesame", "same") should return true.
      Passed
      confirmEnding("Open sesame", "pen") should return false.
      Passed
      confirmEnding("Open sesame", "game") should return false.
      Passed
      confirmEnding("If you want to save our world, you must hurry. We dont know how much longer we can withstand the nothing", "mountain") should return false.
      Passed
      confirmEnding("Abstraction", "action") should return true.









      share|improve this question











      $endgroup$




      Challenge:




      Check if a string (first argument, str) ends with the given target
      string (second argument, target).



      This challenge can be solved with the .endsWith() method. But for the
      purpose of this challenge, do not use it.




      I would like to especially have my solution critiqued.



      function confirmEnding(str, target)
      let lengthOfString = str.length;
      let lengthOfTarget = target.length;
      let subtractLengths = lengthOfString - lengthOfTarget;
      let lastIndexOfString = str.lastIndexOf(target);

      if(str.includes(target) === true)
      if(lastIndexOfString === subtractLengths)
      return true;

      else
      return false;


      else
      return false;




      Test Cases:



      confirmEnding("Bastian", "n") should return true.
      Passed
      confirmEnding("Congratulation", "on") should return true.
      Passed
      confirmEnding("Connor", "n") should return false.
      Passed
      confirmEnding("Walking on water and developing software from a specification are easy if both are frozen", "specification") should return false.
      Passed
      confirmEnding("He has to give me a new name", "name") should return true.
      Passed
      confirmEnding("Open sesame", "same") should return true.
      Passed
      confirmEnding("Open sesame", "pen") should return false.
      Passed
      confirmEnding("Open sesame", "game") should return false.
      Passed
      confirmEnding("If you want to save our world, you must hurry. We dont know how much longer we can withstand the nothing", "mountain") should return false.
      Passed
      confirmEnding("Abstraction", "action") should return true.






      javascript algorithm programming-challenge strings reinventing-the-wheel






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited 9 hours ago









      200_success

      136k21 gold badges175 silver badges444 bronze badges




      136k21 gold badges175 silver badges444 bronze badges










      asked 9 hours ago









      DreamVision2017DreamVision2017

      1356 bronze badges




      1356 bronze badges























          2 Answers
          2






          active

          oldest

          votes


















          5














          $begingroup$

          Review



          You have a bit too many variables to my taste, but that's not much of a problem.




          let lengthOfString = str.length; // is a variable that useful here?



          I would use const instead of let because the variables are only set once.



          The if-statements could be written with much less overhead.



          First,




          str.includes(target) === true



          could be written as



          str.includes(target)


          But even better is to leave it out entirely, since the index would be -1 when not included anyway, which would never match str.length - target.length.



          Further, the false branches are completely redundant. You should return the result of the condition rather than creating unnecessary branches yielding true or false based on the condition.




          Simplified Solution



          The function could be shortened to:



          function confirmEnding(str, target) 
          const subtractLengths = str.length - target.length;
          const lastIndexOfString = str.lastIndexOf(target);
          return lastIndexOfString === subtractLengths;



          Or a one-liner:



          function confirmEnding(str, target) 
          return str.lastIndexOf(target) === str.length - target.length;



          Since the challenge description and test cases don't mention null and undefined values, I didn't include any checks for these edge cases.






          share|improve this answer









          $endgroup$






















            4














            $begingroup$

            Your solution is far too complicated. It's also inefficient, because it uses functions .lastIndexOf() and .includes(), both of which analyze the entire str looking for target, whereas an optimal solution should look only starting at a known position at the end of str.



            Here are two simple solutions:






            function confirmEnding(str, target) 
            return str.startsWith(target, str.length - target.length);


            function confirmEnding(str, target)
            return target == str.substring(str.length - target.length);


            console.log(
            false == confirmEnding("s", "try long target strings") &&
            false == confirmEnding("", "try an empty str") &&
            true == confirmEnding("Bastian", "n") &&
            true == confirmEnding("Congratulation", "on") &&
            false == confirmEnding("Connor", "n") &&
            false == confirmEnding("Walking on water and developing software from a specification are easy if both are frozen", "specification") &&
            true == confirmEnding("He has to give me a new name", "name") &&
            true == confirmEnding("Open sesame", "same") &&
            false == confirmEnding("Open sesame", "pen") &&
            false == confirmEnding("Open sesame", "game") &&
            false == confirmEnding("If you want to save our world, you must hurry. We dont know how much longer we can withstand the nothing", "mountain") &&
            true == confirmEnding("Abstraction", "action")
            )





            The first solution, using .startsWith(), should be efficient, but it might be considered "cheating" to use .startsWith() even though only .endsWith() is prohibited.



            The second solution is slightly simpler, but it involves creating a substring, so it would be less efficient.






            share|improve this answer









            $endgroup$

















              Your Answer






              StackExchange.ifUsing("editor", function ()
              StackExchange.using("externalEditor", function ()
              StackExchange.using("snippets", function ()
              StackExchange.snippets.init();
              );
              );
              , "code-snippets");

              StackExchange.ready(function()
              var channelOptions =
              tags: "".split(" "),
              id: "196"
              ;
              initTagRenderer("".split(" "), "".split(" "), channelOptions);

              StackExchange.using("externalEditor", function()
              // Have to fire editor after snippets, if snippets enabled
              if (StackExchange.settings.snippets.snippetsEnabled)
              StackExchange.using("snippets", function()
              createEditor();
              );

              else
              createEditor();

              );

              function createEditor()
              StackExchange.prepareEditor(
              heartbeatType: 'answer',
              autoActivateHeartbeat: false,
              convertImagesToLinks: false,
              noModals: true,
              showLowRepImageUploadWarning: true,
              reputationToPostImages: null,
              bindNavPrevention: true,
              postfix: "",
              imageUploader:
              brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
              contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/4.0/"u003ecc by-sa 4.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
              allowUrls: true
              ,
              onDemand: true,
              discardSelector: ".discard-answer"
              ,immediatelyShowMarkdownHelp:true
              );



              );














              draft saved

              draft discarded
















              StackExchange.ready(
              function ()
              StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcodereview.stackexchange.com%2fquestions%2f228859%2fconfirm-the-ending-of-a-string%23new-answer', 'question_page');

              );

              Post as a guest















              Required, but never shown

























              2 Answers
              2






              active

              oldest

              votes








              2 Answers
              2






              active

              oldest

              votes









              active

              oldest

              votes






              active

              oldest

              votes









              5














              $begingroup$

              Review



              You have a bit too many variables to my taste, but that's not much of a problem.




              let lengthOfString = str.length; // is a variable that useful here?



              I would use const instead of let because the variables are only set once.



              The if-statements could be written with much less overhead.



              First,




              str.includes(target) === true



              could be written as



              str.includes(target)


              But even better is to leave it out entirely, since the index would be -1 when not included anyway, which would never match str.length - target.length.



              Further, the false branches are completely redundant. You should return the result of the condition rather than creating unnecessary branches yielding true or false based on the condition.




              Simplified Solution



              The function could be shortened to:



              function confirmEnding(str, target) 
              const subtractLengths = str.length - target.length;
              const lastIndexOfString = str.lastIndexOf(target);
              return lastIndexOfString === subtractLengths;



              Or a one-liner:



              function confirmEnding(str, target) 
              return str.lastIndexOf(target) === str.length - target.length;



              Since the challenge description and test cases don't mention null and undefined values, I didn't include any checks for these edge cases.






              share|improve this answer









              $endgroup$



















                5














                $begingroup$

                Review



                You have a bit too many variables to my taste, but that's not much of a problem.




                let lengthOfString = str.length; // is a variable that useful here?



                I would use const instead of let because the variables are only set once.



                The if-statements could be written with much less overhead.



                First,




                str.includes(target) === true



                could be written as



                str.includes(target)


                But even better is to leave it out entirely, since the index would be -1 when not included anyway, which would never match str.length - target.length.



                Further, the false branches are completely redundant. You should return the result of the condition rather than creating unnecessary branches yielding true or false based on the condition.




                Simplified Solution



                The function could be shortened to:



                function confirmEnding(str, target) 
                const subtractLengths = str.length - target.length;
                const lastIndexOfString = str.lastIndexOf(target);
                return lastIndexOfString === subtractLengths;



                Or a one-liner:



                function confirmEnding(str, target) 
                return str.lastIndexOf(target) === str.length - target.length;



                Since the challenge description and test cases don't mention null and undefined values, I didn't include any checks for these edge cases.






                share|improve this answer









                $endgroup$

















                  5














                  5










                  5







                  $begingroup$

                  Review



                  You have a bit too many variables to my taste, but that's not much of a problem.




                  let lengthOfString = str.length; // is a variable that useful here?



                  I would use const instead of let because the variables are only set once.



                  The if-statements could be written with much less overhead.



                  First,




                  str.includes(target) === true



                  could be written as



                  str.includes(target)


                  But even better is to leave it out entirely, since the index would be -1 when not included anyway, which would never match str.length - target.length.



                  Further, the false branches are completely redundant. You should return the result of the condition rather than creating unnecessary branches yielding true or false based on the condition.




                  Simplified Solution



                  The function could be shortened to:



                  function confirmEnding(str, target) 
                  const subtractLengths = str.length - target.length;
                  const lastIndexOfString = str.lastIndexOf(target);
                  return lastIndexOfString === subtractLengths;



                  Or a one-liner:



                  function confirmEnding(str, target) 
                  return str.lastIndexOf(target) === str.length - target.length;



                  Since the challenge description and test cases don't mention null and undefined values, I didn't include any checks for these edge cases.






                  share|improve this answer









                  $endgroup$



                  Review



                  You have a bit too many variables to my taste, but that's not much of a problem.




                  let lengthOfString = str.length; // is a variable that useful here?



                  I would use const instead of let because the variables are only set once.



                  The if-statements could be written with much less overhead.



                  First,




                  str.includes(target) === true



                  could be written as



                  str.includes(target)


                  But even better is to leave it out entirely, since the index would be -1 when not included anyway, which would never match str.length - target.length.



                  Further, the false branches are completely redundant. You should return the result of the condition rather than creating unnecessary branches yielding true or false based on the condition.




                  Simplified Solution



                  The function could be shortened to:



                  function confirmEnding(str, target) 
                  const subtractLengths = str.length - target.length;
                  const lastIndexOfString = str.lastIndexOf(target);
                  return lastIndexOfString === subtractLengths;



                  Or a one-liner:



                  function confirmEnding(str, target) 
                  return str.lastIndexOf(target) === str.length - target.length;



                  Since the challenge description and test cases don't mention null and undefined values, I didn't include any checks for these edge cases.







                  share|improve this answer












                  share|improve this answer



                  share|improve this answer










                  answered 9 hours ago









                  dfhwzedfhwze

                  11.4k2 gold badges22 silver badges75 bronze badges




                  11.4k2 gold badges22 silver badges75 bronze badges


























                      4














                      $begingroup$

                      Your solution is far too complicated. It's also inefficient, because it uses functions .lastIndexOf() and .includes(), both of which analyze the entire str looking for target, whereas an optimal solution should look only starting at a known position at the end of str.



                      Here are two simple solutions:






                      function confirmEnding(str, target) 
                      return str.startsWith(target, str.length - target.length);


                      function confirmEnding(str, target)
                      return target == str.substring(str.length - target.length);


                      console.log(
                      false == confirmEnding("s", "try long target strings") &&
                      false == confirmEnding("", "try an empty str") &&
                      true == confirmEnding("Bastian", "n") &&
                      true == confirmEnding("Congratulation", "on") &&
                      false == confirmEnding("Connor", "n") &&
                      false == confirmEnding("Walking on water and developing software from a specification are easy if both are frozen", "specification") &&
                      true == confirmEnding("He has to give me a new name", "name") &&
                      true == confirmEnding("Open sesame", "same") &&
                      false == confirmEnding("Open sesame", "pen") &&
                      false == confirmEnding("Open sesame", "game") &&
                      false == confirmEnding("If you want to save our world, you must hurry. We dont know how much longer we can withstand the nothing", "mountain") &&
                      true == confirmEnding("Abstraction", "action")
                      )





                      The first solution, using .startsWith(), should be efficient, but it might be considered "cheating" to use .startsWith() even though only .endsWith() is prohibited.



                      The second solution is slightly simpler, but it involves creating a substring, so it would be less efficient.






                      share|improve this answer









                      $endgroup$



















                        4














                        $begingroup$

                        Your solution is far too complicated. It's also inefficient, because it uses functions .lastIndexOf() and .includes(), both of which analyze the entire str looking for target, whereas an optimal solution should look only starting at a known position at the end of str.



                        Here are two simple solutions:






                        function confirmEnding(str, target) 
                        return str.startsWith(target, str.length - target.length);


                        function confirmEnding(str, target)
                        return target == str.substring(str.length - target.length);


                        console.log(
                        false == confirmEnding("s", "try long target strings") &&
                        false == confirmEnding("", "try an empty str") &&
                        true == confirmEnding("Bastian", "n") &&
                        true == confirmEnding("Congratulation", "on") &&
                        false == confirmEnding("Connor", "n") &&
                        false == confirmEnding("Walking on water and developing software from a specification are easy if both are frozen", "specification") &&
                        true == confirmEnding("He has to give me a new name", "name") &&
                        true == confirmEnding("Open sesame", "same") &&
                        false == confirmEnding("Open sesame", "pen") &&
                        false == confirmEnding("Open sesame", "game") &&
                        false == confirmEnding("If you want to save our world, you must hurry. We dont know how much longer we can withstand the nothing", "mountain") &&
                        true == confirmEnding("Abstraction", "action")
                        )





                        The first solution, using .startsWith(), should be efficient, but it might be considered "cheating" to use .startsWith() even though only .endsWith() is prohibited.



                        The second solution is slightly simpler, but it involves creating a substring, so it would be less efficient.






                        share|improve this answer









                        $endgroup$

















                          4














                          4










                          4







                          $begingroup$

                          Your solution is far too complicated. It's also inefficient, because it uses functions .lastIndexOf() and .includes(), both of which analyze the entire str looking for target, whereas an optimal solution should look only starting at a known position at the end of str.



                          Here are two simple solutions:






                          function confirmEnding(str, target) 
                          return str.startsWith(target, str.length - target.length);


                          function confirmEnding(str, target)
                          return target == str.substring(str.length - target.length);


                          console.log(
                          false == confirmEnding("s", "try long target strings") &&
                          false == confirmEnding("", "try an empty str") &&
                          true == confirmEnding("Bastian", "n") &&
                          true == confirmEnding("Congratulation", "on") &&
                          false == confirmEnding("Connor", "n") &&
                          false == confirmEnding("Walking on water and developing software from a specification are easy if both are frozen", "specification") &&
                          true == confirmEnding("He has to give me a new name", "name") &&
                          true == confirmEnding("Open sesame", "same") &&
                          false == confirmEnding("Open sesame", "pen") &&
                          false == confirmEnding("Open sesame", "game") &&
                          false == confirmEnding("If you want to save our world, you must hurry. We dont know how much longer we can withstand the nothing", "mountain") &&
                          true == confirmEnding("Abstraction", "action")
                          )





                          The first solution, using .startsWith(), should be efficient, but it might be considered "cheating" to use .startsWith() even though only .endsWith() is prohibited.



                          The second solution is slightly simpler, but it involves creating a substring, so it would be less efficient.






                          share|improve this answer









                          $endgroup$



                          Your solution is far too complicated. It's also inefficient, because it uses functions .lastIndexOf() and .includes(), both of which analyze the entire str looking for target, whereas an optimal solution should look only starting at a known position at the end of str.



                          Here are two simple solutions:






                          function confirmEnding(str, target) 
                          return str.startsWith(target, str.length - target.length);


                          function confirmEnding(str, target)
                          return target == str.substring(str.length - target.length);


                          console.log(
                          false == confirmEnding("s", "try long target strings") &&
                          false == confirmEnding("", "try an empty str") &&
                          true == confirmEnding("Bastian", "n") &&
                          true == confirmEnding("Congratulation", "on") &&
                          false == confirmEnding("Connor", "n") &&
                          false == confirmEnding("Walking on water and developing software from a specification are easy if both are frozen", "specification") &&
                          true == confirmEnding("He has to give me a new name", "name") &&
                          true == confirmEnding("Open sesame", "same") &&
                          false == confirmEnding("Open sesame", "pen") &&
                          false == confirmEnding("Open sesame", "game") &&
                          false == confirmEnding("If you want to save our world, you must hurry. We dont know how much longer we can withstand the nothing", "mountain") &&
                          true == confirmEnding("Abstraction", "action")
                          )





                          The first solution, using .startsWith(), should be efficient, but it might be considered "cheating" to use .startsWith() even though only .endsWith() is prohibited.



                          The second solution is slightly simpler, but it involves creating a substring, so it would be less efficient.






                          function confirmEnding(str, target) 
                          return str.startsWith(target, str.length - target.length);


                          function confirmEnding(str, target)
                          return target == str.substring(str.length - target.length);


                          console.log(
                          false == confirmEnding("s", "try long target strings") &&
                          false == confirmEnding("", "try an empty str") &&
                          true == confirmEnding("Bastian", "n") &&
                          true == confirmEnding("Congratulation", "on") &&
                          false == confirmEnding("Connor", "n") &&
                          false == confirmEnding("Walking on water and developing software from a specification are easy if both are frozen", "specification") &&
                          true == confirmEnding("He has to give me a new name", "name") &&
                          true == confirmEnding("Open sesame", "same") &&
                          false == confirmEnding("Open sesame", "pen") &&
                          false == confirmEnding("Open sesame", "game") &&
                          false == confirmEnding("If you want to save our world, you must hurry. We dont know how much longer we can withstand the nothing", "mountain") &&
                          true == confirmEnding("Abstraction", "action")
                          )





                          function confirmEnding(str, target) 
                          return str.startsWith(target, str.length - target.length);


                          function confirmEnding(str, target)
                          return target == str.substring(str.length - target.length);


                          console.log(
                          false == confirmEnding("s", "try long target strings") &&
                          false == confirmEnding("", "try an empty str") &&
                          true == confirmEnding("Bastian", "n") &&
                          true == confirmEnding("Congratulation", "on") &&
                          false == confirmEnding("Connor", "n") &&
                          false == confirmEnding("Walking on water and developing software from a specification are easy if both are frozen", "specification") &&
                          true == confirmEnding("He has to give me a new name", "name") &&
                          true == confirmEnding("Open sesame", "same") &&
                          false == confirmEnding("Open sesame", "pen") &&
                          false == confirmEnding("Open sesame", "game") &&
                          false == confirmEnding("If you want to save our world, you must hurry. We dont know how much longer we can withstand the nothing", "mountain") &&
                          true == confirmEnding("Abstraction", "action")
                          )






                          share|improve this answer












                          share|improve this answer



                          share|improve this answer










                          answered 9 hours ago









                          200_success200_success

                          136k21 gold badges175 silver badges444 bronze badges




                          136k21 gold badges175 silver badges444 bronze badges































                              draft saved

                              draft discarded















































                              Thanks for contributing an answer to Code Review Stack Exchange!


                              • Please be sure to answer the question. Provide details and share your research!

                              But avoid


                              • Asking for help, clarification, or responding to other answers.

                              • Making statements based on opinion; back them up with references or personal experience.

                              Use MathJax to format equations. MathJax reference.


                              To learn more, see our tips on writing great answers.




                              draft saved


                              draft discarded














                              StackExchange.ready(
                              function ()
                              StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcodereview.stackexchange.com%2fquestions%2f228859%2fconfirm-the-ending-of-a-string%23new-answer', 'question_page');

                              );

                              Post as a guest















                              Required, but never shown





















































                              Required, but never shown














                              Required, but never shown












                              Required, but never shown







                              Required, but never shown

































                              Required, but never shown














                              Required, but never shown












                              Required, but never shown







                              Required, but never shown







                              Popular posts from this blog

                              Canceling a color specificationRandomly assigning color to Graphics3D objects?Default color for Filling in Mathematica 9Coloring specific elements of sets with a prime modified order in an array plotHow to pick a color differing significantly from the colors already in a given color list?Detection of the text colorColor numbers based on their valueCan color schemes for use with ColorData include opacity specification?My dynamic color schemes

                              Invision Community Contents History See also References External links Navigation menuProprietaryinvisioncommunity.comIPS Community ForumsIPS Community Forumsthis blog entry"License Changes, IP.Board 3.4, and the Future""Interview -- Matt Mecham of Ibforums""CEO Invision Power Board, Matt Mecham Is a Liar, Thief!"IPB License Explanation 1.3, 1.3.1, 2.0, and 2.1ArchivedSecurity Fixes, Updates And Enhancements For IPB 1.3.1Archived"New Demo Accounts - Invision Power Services"the original"New Default Skin"the original"Invision Power Board 3.0.0 and Applications Released"the original"Archived copy"the original"Perpetual licenses being done away with""Release Notes - Invision Power Services""Introducing: IPS Community Suite 4!"Invision Community Release Notes

                              199年 目錄 大件事 到箇年出世嗰人 到箇年死嗰人 節慶、風俗習慣 導覽選單