replace.js 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. //-------------------------------------------------------------------------------------------------------
  2. // Copyright (C) Microsoft. All rights reserved.
  3. // Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
  4. //-------------------------------------------------------------------------------------------------------
  5. function write(v) { WScript.Echo(v + ""); }
  6. function doEval(str) {
  7. var r;
  8. try {
  9. r = eval(str);
  10. write(str + ": result = " + r);
  11. } catch (e) {
  12. write("Exception: " + e);
  13. }
  14. }
  15. function f0()
  16. {
  17. write("f0");
  18. return "f0";
  19. }
  20. function f1(x)
  21. {
  22. write("f1 x: " + x);
  23. return "f1";
  24. }
  25. function f2(x,y)
  26. {
  27. write("f2 x: " + x + " y: " + y);
  28. return "f2";
  29. }
  30. function f3(x,y,z)
  31. {
  32. write("f3 x: " + x + " y: " + y + " z: " + z);
  33. write(z.substring(y, x.length));
  34. return "f3";
  35. }
  36. var s1 = new String("This is a some string value. 12.34");
  37. var s2 = "This is a some string value. 12.34";
  38. var search = ['"some"', 12, 34, "/[0-9]/", "/[0-9]+/", "/[0-9]+/g", "undefined", "null" ];
  39. var replace= ['"any"', '""', "undefined", "null", "f0", "f1", "f2", "f3"];
  40. for (var i=0; i<search.length; i++)
  41. {
  42. for (var j=0; j<replace.length; j++)
  43. {
  44. doEval("s1.replace(" + search[i] + ", " + replace[j] + ");");
  45. doEval("s2.replace(" + search[i] + ", " + replace[j] + ");");
  46. }
  47. }
  48. //implicit calls
  49. var called = false;
  50. var replaceobj = {toString: function() { called = true; }};
  51. "ABC".replace("D", replaceobj);
  52. WScript.Echo (called);