Warning: UPDATE command denied to user 'jideretumysql'@'10.0.66.106' for table 'cache' query: UPDATE cache SET data = 'a:402:{s:13:\"theme_default\";s:4:\"kewl\";s:13:\"filter_html_1\";s:1:\"1\";s:18:\"node_options_forum\";a:1:{i:0;s:6:\"status\";}s:18:\"drupal_private_key\";s:64:\"a5de3144cabd3a5a76889cdc7d52a5656ec758dd9c66b720824755fe28d5dc59\";s:10:\"menu_masks\";a:24:{i:0;i:127;i:1;i:63;i:2;i:62;i:3;i:61;i:4;i:59;i:5;i:58;i:6;i:57;i:7;i:56;i:8;i:31;i:9;i:30;i:10;i:29;i:11;i:28;i:12;i:24;i:13;i:21;i:14;i:15;i:15;i:14;i:16;i:12;i:17;i:11;i:18;i:7;i:19;i:6;i:20;i:5;i:21;i:3;i:22;i:2;i:23;i:1;}s:12:\"install_task\";s:4:\"done\";s:13:\"menu_expanded\";a:2:{i:0;s:15:\"menu-categories\";i:1;s:10:\"navigation\";}s:9:\"site_name\";s:7:\"jide.fr\";s:9:\"site_mail\";s:17:\"jide.fr@gmail.com\";s:21:\"date_def in /home/jideretu/www/includes/database.mysql.inc on line 135

Warning: INSERT command denied to user 'jideretumysql'@'10.0.66.106' for table 'watchdog' query: INSERT INTO watchdog (uid, type, message, variables, severity, link, location, referer, hostname, timestamp) VALUES (0, 'php', '%message in %file on line %line.', 'a:4:{s:6:\"%error\";s:12:\"user warning\";s:8:\"%message\";s:2313:\"UPDATE command denied to user 'jideretumysql'@'10.0.66.106' for table 'cache_filter'\nquery: UPDATE cache_filter SET data = '<p>I had to replace words in a text while keeping the capitalization in Javascript.</p>\\n<p>Given the text :<br />\\n\\"It is a good burger. Or an hamburger. Burger is good\\".</p>\\n<p>With the replacement word \\"sandwich\\", it should become :<br />\\n\\"It is a good in /home/jideretu/www/includes/database.mysql.inc on line 135

Warning: INSERT command denied to user 'jideretumysql'@'10.0.66.106' for table 'watchdog' query: INSERT INTO watchdog (uid, type, message, variables, severity, link, location, referer, hostname, timestamp) VALUES (0, 'php', '%message in %file on line %line.', 'a:4:{s:6:\"%error\";s:12:\"user warning\";s:8:\"%message\";s:6491:\"UPDATE command denied to user 'jideretumysql'@'10.0.66.106' for table 'cache_views_data'\nquery: UPDATE cache_views_data SET data = 'a:3:{s:6:\\"result\\";a:74:{i:0;O:8:\\"stdClass\\":1:{s:3:\\"nid\\";s:1:\\"4\\";}i:1;O:8:\\"stdClass\\":1:{s:3:\\"nid\\";s:1:\\"2\\";}i:2;O:8:\\"stdClass\\":1:{s:3:\\"nid\\";s:2:\\"47\\";}i:3;O:8:\\"stdClass\\&quo in /home/jideretu/www/includes/database.mysql.inc on line 135

Warning: INSERT command denied to user 'jideretumysql'@'10.0.66.106' for table 'watchdog' query: INSERT INTO watchdog (uid, type, message, variables, severity, link, location, referer, hostname, timestamp) VALUES (0, 'php', '%message in %file on line %line.', 'a:4:{s:6:\"%error\";s:12:\"user warning\";s:8:\"%message\";s:6304:\"UPDATE command denied to user 'jideretumysql'@'10.0.66.106' for table 'cache_views_data'\nquery: UPDATE cache_views_data SET data = 'a:4:{s:4:\\"head\\";s:0:\\"\\";s:3:\\"css\\";a:0:{}s:2:\\"js\\";a:0:{}s:6:\\"output\\";s:3576:\\"<div class=\\"view view-tagadelic view-id-tagadelic view-display-id-block_1 view-dom-id-1\\">\\n \\n \\n \\n <div class=\\"view-content\\"& in /home/jideretu/www/includes/database.mysql.inc on line 135

Warning: INSERT command denied to user 'jideretumysql'@'10.0.66.106' for table 'watchdog' query: INSERT INTO watchdog (uid, type, message, variables, severity, link, location, referer, hostname, timestamp) VALUES (0, 'php', '%message in %file on line %line.', 'a:4:{s:6:\"%error\";s:12:\"user warning\";s:8:\"%message\";s:6299:\"UPDATE command denied to user 'jideretumysql'@'10.0.66.106' for table 'cache_block'\nquery: UPDATE cache_block SET data = 'a:2:{s:7:\\"content\\";s:3576:\\"<div class=\\"view view-tagadelic view-id-tagadelic view-display-id-block_1 view-dom-id-1\\">\\n \\n \\n \\n <div class=\\"view-content\\">\\n <div class=\\"tagadelic_views\\"><a href=\\"/english/android-0\\" class=\\&am in /home/jideretu/www/includes/database.mysql.inc on line 135

Warning: INSERT command denied to user 'jideretumysql'@'10.0.66.106' for table 'watchdog' query: INSERT INTO watchdog (uid, type, message, variables, severity, link, location, referer, hostname, timestamp) VALUES (0, 'php', '%message in %file on line %line.', 'a:4:{s:6:\"%error\";s:12:\"user warning\";s:8:\"%message\";s:410:\"UPDATE command denied to user 'jideretumysql'@'10.0.66.106' for table 'cache_filter'\nquery: UPDATE cache_filter SET data = '<p>Follow me : <a href=\\"http://twitter.com/jidefr\\">jidefr</a></p>\\n', created = 1513123168, expire = 1513209568, headers = '', serialized = 0 WHERE cid = '1:fb82f31c75d9dcc2908dc560fa3f9280'\";s:5:\"%file\";s:37:\"/home/jideretu/www/includes/cache.inc\";s:5:\"% in /home/jideretu/www/includes/database.mysql.inc on line 135

Warning: INSERT command denied to user 'jideretumysql'@'10.0.66.106' for table 'watchdog' query: INSERT INTO watchdog (uid, type, message, variables, severity, link, location, referer, hostname, timestamp) VALUES (0, 'php', '%message in %file on line %line.', 'a:4:{s:6:\"%error\";s:12:\"user warning\";s:8:\"%message\";s:1007:\"UPDATE command denied to user 'jideretumysql'@'10.0.66.106' for table 'cache_views_data'\nquery: UPDATE cache_views_data SET data = 'a:3:{s:6:\\"result\\";a:1:{i:0;O:8:\\"stdClass\\":3:{s:10:\\"twitter_id\\";s:18:\\"937070315510861824\\";s:12:\\"twitter_text\\";s:143:\\"RT @PhilippeCorbe: Si vous avez du mal à comprendre l\\'affaire russe, et l\\'importance de l\\'information du jour, le plaider coupable de l in /home/jideretu/www/includes/database.mysql.inc on line 135

Warning: INSERT command denied to user 'jideretumysql'@'10.0.66.106' for table 'watchdog' query: INSERT INTO watchdog (uid, type, message, variables, severity, link, location, referer, hostname, timestamp) VALUES (0, 'php', '%message in %file on line %line.', 'a:4:{s:6:\"%error\";s:12:\"user warning\";s:8:\"%message\";s:2331:\"UPDATE command denied to user 'jideretumysql'@'10.0.66.106' for table 'cache_views_data'\nquery: UPDATE cache_views_data SET data = 'a:4:{s:4:\\"head\\";s:0:\\"\\";s:3:\\"css\\";a:0:{}s:2:\\"js\\";a:3:{i:0;a:5:{i:0;s:38:\\"sites/default/modules/views/js/base.js\\";i:1;s:6:\\"module\\";i:2;s:6:\\"header\\";i:3;b:0;i:4;b:1;}i:1;a:5:{i:0;s:43:\\"sites/default/modules/views/js/ajax_view.js\\";i:1 in /home/jideretu/www/includes/database.mysql.inc on line 135

Warning: INSERT command denied to user 'jideretumysql'@'10.0.66.106' for table 'watchdog' query: INSERT INTO watchdog (uid, type, message, variables, severity, link, location, referer, hostname, timestamp) VALUES (0, 'php', '%message in %file on line %line.', 'a:4:{s:6:\"%error\";s:12:\"user warning\";s:8:\"%message\";s:677:\"UPDATE command denied to user 'jideretumysql'@'10.0.66.106' for table 'cache_block'\nquery: UPDATE cache_block SET data = 'a:2:{s:7:\\"subject\\";s:15:\\"Recent Comments\\";s:7:\\"content\\";s:187:\\"<div id=\\"dsq-recentcomments\\" class=\\"dsq-widget\\"><script type=\\"text/javascript\\" src=\\"http://disqus.com/forums/jide/recent_comments_widget.js?num_items=1&hide_avatars=1\ in /home/jideretu/www/includes/database.mysql.inc on line 135
Replacing words in a text while keeping the capitalization | jide.fr

Replacing words in a text while keeping the capitalization

  • user warning: UPDATE command denied to user 'jideretumysql'@'10.0.66.106' for table 'cache_filter' query: UPDATE cache_filter SET data = '<p>I had to replace words in a text while keeping the capitalization in Javascript.</p>\n<p>Given the text :<br />\n\"It is a good burger. Or an hamburger. Burger is good\".</p>\n<p>With the replacement word \"sandwich\", it should become :<br />\n\"It is a good sandwich. Or an hamburger. Sandwich is good\".</p>\n<p>It has 2 challenges :</p>\n<ul>\n<li>Match only real words, e.g. match \"burger\", but not \"hamburger\"</li>\n<li>Keep the capitalization of the word, e.g. \"Burger\" should become \"Sandwich\"</li>\n</ul>\n<p>For the first one, we should use lookahead and lookbehind features of regular expressions, but unfortunately, in javascript there is no lookbehind, so we have to capture that part and return it with the result.</p>\n<p>So here we go :<br />\n<code>var replace = function(text, r, v) {<br />\n return text.replace(new RegExp(\'([^a-z])(\'+r+\')|(^\'+r+\')(?=[^a-z]?)\', \"gi\"), function(match, p1, p2, p3, offset, string) {<br />\n p1 = p1 || \'\';<br />\n p2 = p2 || p3;<br />\n if (p2[0].toUpperCase() == p2[0]) {<br />\n // Assume its all caps.<br />\n if (p2[1].toUpperCase() == p2[1]) {<br />\n v = v.toUpperCase();<br />\n }<br />\n // Assume its capitalized.<br />\n else {<br />\n v = v[0].toUpperCase() + v.slice(1);<br />\n }<br />\n }<br />\n return p1 + v;<br />\n });<br />\n}</code></p>\n<p>Test it:<br />\n<code>var text = \"It is a good burger. Or an hamburger. Burger is good\";<br />\nconsole.log(text + \"\\n\" + replace(text, \'burger\', \'sandwich\'));</code></p>\n', created = 1513123168, expire = 1513209568, headers = '', serialized = 0 WHERE cid = '1:9653ef93a9030ad2247228d7d635b480' in /home/jideretu/www/includes/cache.inc on line 112.
  • user warning: UPDATE command denied to user 'jideretumysql'@'10.0.66.106' for table 'cache_views_data' query: UPDATE cache_views_data SET data = 'a:3:{s:6:\"result\";a:74:{i:0;O:8:\"stdClass\":1:{s:3:\"nid\";s:1:\"4\";}i:1;O:8:\"stdClass\":1:{s:3:\"nid\";s:1:\"2\";}i:2;O:8:\"stdClass\":1:{s:3:\"nid\";s:2:\"47\";}i:3;O:8:\"stdClass\":1:{s:3:\"nid\";s:2:\"48\";}i:4;O:8:\"stdClass\":1:{s:3:\"nid\";s:2:\"54\";}i:5;O:8:\"stdClass\":1:{s:3:\"nid\";s:2:\"60\";}i:6;O:8:\"stdClass\":1:{s:3:\"nid\";s:2:\"62\";}i:7;O:8:\"stdClass\":1:{s:3:\"nid\";s:2:\"63\";}i:8;O:8:\"stdClass\":1:{s:3:\"nid\";s:2:\"65\";}i:9;O:8:\"stdClass\":1:{s:3:\"nid\";s:2:\"67\";}i:10;O:8:\"stdClass\":1:{s:3:\"nid\";s:2:\"69\";}i:11;O:8:\"stdClass\":1:{s:3:\"nid\";s:2:\"72\";}i:12;O:8:\"stdClass\":1:{s:3:\"nid\";s:2:\"74\";}i:13;O:8:\"stdClass\":1:{s:3:\"nid\";s:2:\"76\";}i:14;O:8:\"stdClass\":1:{s:3:\"nid\";s:2:\"78\";}i:15;O:8:\"stdClass\":1:{s:3:\"nid\";s:2:\"80\";}i:16;O:8:\"stdClass\":1:{s:3:\"nid\";s:2:\"83\";}i:17;O:8:\"stdClass\":1:{s:3:\"nid\";s:2:\"84\";}i:18;O:8:\"stdClass\":1:{s:3:\"nid\";s:2:\"87\";}i:19;O:8:\"stdClass\":1:{s:3:\"nid\";s:2:\"90\";}i:20;O:8:\"stdClass\":1:{s:3:\"nid\";s:2:\"92\";}i:21;O:8:\"stdClass\":1:{s:3:\"nid\";s:2:\"94\";}i:22;O:8:\"stdClass\":1:{s:3:\"nid\";s:2:\"95\";}i:23;O:8:\"stdClass\":1:{s:3:\"nid\";s:2:\"98\";}i:24;O:8:\"stdClass\":1:{s:3:\"nid\";s:3:\"100\";}i:25;O:8:\"stdClass\":1:{s:3:\"nid\";s:3:\"101\";}i:26;O:8:\"stdClass\":1:{s:3:\"nid\";s:3:\"104\";}i:27;O:8:\"stdClass\":1:{s:3:\"nid\";s:3:\"106\";}i:28;O:8:\"stdClass\":1:{s:3:\"nid\";s:3:\"108\";}i:29;O:8:\"stdClass\":1:{s:3:\"nid\";s:3:\"110\";}i:30;O:8:\"stdClass\":1:{s:3:\"nid\";s:3:\"111\";}i:31;O:8:\"stdClass\":1:{s:3:\"nid\";s:3:\"113\";}i:32;O:8:\"stdClass\":1:{s:3:\"nid\";s:3:\"118\";}i:33;O:8:\"stdClass\":1:{s:3:\"nid\";s:3:\"119\";}i:34;O:8:\"stdClass\":1:{s:3:\"nid\";s:3:\"121\";}i:35;O:8:\"stdClass\":1:{s:3:\"nid\";s:3:\"124\";}i:36;O:8:\"stdClass\":1:{s:3:\"nid\";s:3:\"126\";}i:37;O:8:\"stdClass\":1:{s:3:\"nid\";s:3:\"128\";}i:38;O:8:\"stdClass\":1:{s:3:\"nid\";s:3:\"130\";}i:39;O:8:\"stdClass\":1:{s:3:\"nid\";s:3:\"132\";}i:40;O:8:\"stdClass\":1:{s:3:\"nid\";s:3:\"134\";}i:41;O:8:\"stdClass\":1:{s:3:\"nid\";s:3:\"135\";}i:42;O:8:\"stdClass\":1:{s:3:\"nid\";s:3:\"138\";}i:43;O:8:\"stdClass\":1:{s:3:\"nid\";s:3:\"142\";}i:44;O:8:\"stdClass\":1:{s:3:\"nid\";s:3:\"144\";}i:45;O:8:\"stdClass\":1:{s:3:\"nid\";s:3:\"145\";}i:46;O:8:\"stdClass\":1:{s:3:\"nid\";s:3:\"147\";}i:47;O:8:\"stdClass\":1:{s:3:\"nid\";s:3:\"149\";}i:48;O:8:\"stdClass\":1:{s:3:\"nid\";s:3:\"151\";}i:49;O:8:\"stdClass\":1:{s:3:\"nid\";s:3:\"153\";}i:50;O:8:\"stdClass\":1:{s:3:\"nid\";s:3:\"155\";}i:51;O:8:\"stdClass\":1:{s:3:\"nid\";s:3:\"158\";}i:52;O:8:\"stdClass\":1:{s:3:\"nid\";s:3:\"159\";}i:53;O:8:\"stdClass\":1:{s:3:\"nid\";s:3:\"161\";}i:54;O:8:\"stdClass\":1:{s:3:\"nid\";s:3:\"163\";}i:55;O:8:\"stdClass\":1:{s:3:\"nid\";s:3:\"165\";}i:56;O:8:\"stdClass\":1:{s:3:\"nid\";s:3:\"167\";}i:57;O:8:\"stdClass\":1:{s:3:\"nid\";s:3:\"169\";}i:58;O:8:\"stdClass\":1:{s:3:\"nid\";s:3:\"171\";}i:59;O:8:\"stdClass\":1:{s:3:\"nid\";s:3:\"173\";}i:60;O:8:\"stdClass\":1:{s:3:\"nid\";s:3:\"187\";}i:61;O:8:\"stdClass\":1:{s:3:\"nid\";s:3:\"188\";}i:62;O:8:\"stdClass\":1:{s:3:\"nid\";s:3:\"190\";}i:63;O:8:\"stdClass\":1:{s:3:\"nid\";s:3:\"192\";}i:64;O:8:\"stdClass\":1:{s:3:\"nid\";s:3:\"194\";}i:65;O:8:\"stdClass\":1:{s:3:\"nid\";s:3:\"200\";}i:66;O:8:\"stdClass\":1:{s:3:\"nid\";s:3:\"203\";}i:67;O:8:\"stdClass\":1:{s:3:\"nid\";s:3:\"205\";}i:68;O:8:\"stdClass\":1:{s:3:\"nid\";s:3:\"208\";}i:69;O:8:\"stdClass\":1:{s:3:\"nid\";s:3:\"209\";}i:70;O:8:\"stdClass\":1:{s:3:\"nid\";s:3:\"211\";}i:71;O:8:\"stdClass\":1:{s:3:\"nid\";s:3:\"213\";}i:72;O:8:\"stdClass\":1:{s:3:\"nid\";s:3:\"215\";}i:73;O:8:\"stdClass\":1:{s:3:\"nid\";s:3:\"217\";}}s:10:\"total_rows\";i:74;s:5:\"pager\";a:5:{s:9:\"use_pager\";b:0;s:14:\"items_per_page\";i:0;s:7:\"element\";i:0;s:6:\"offset\";i:0;s:12:\"current_page\";i:0;}}', created = 1513123168, expire = 1513126768, headers = '', serialized = 1 WHERE cid = 'tagadelic:block_1:results:e95417a84dd0b10d3ce7de97e90f7660' in /home/jideretu/www/includes/cache.inc on line 112.
  • user warning: UPDATE command denied to user 'jideretumysql'@'10.0.66.106' for table 'cache_views_data' query: UPDATE cache_views_data SET data = 'a:4:{s:4:\"head\";s:0:\"\";s:3:\"css\";a:0:{}s:2:\"js\";a:0:{}s:6:\"output\";s:3576:\"<div class=\"view view-tagadelic view-id-tagadelic view-display-id-block_1 view-dom-id-1\">\n \n \n \n <div class=\"view-content\">\n <div class=\"tagadelic_views\"><a href=\"/english/android-0\" class=\"tagadelic level1\" rel=\"tag\">android</a> \n<a href=\"/english/apache-0\" class=\"tagadelic level1\" rel=\"tag\">Apache</a> \n<a href=\"/english/automator-0\" class=\"tagadelic level1\" rel=\"tag\">Automator</a> \n<a href=\"/english/bootstrap-0\" class=\"tagadelic level3\" rel=\"tag\">bootstrap</a> \n<a href=\"/english/canal-0\" class=\"tagadelic level1\" rel=\"tag\">canal +</a> \n<a href=\"/english/command-line-0\" class=\"tagadelic level1\" rel=\"tag\">Command line</a> \n<a href=\"/english/css\" class=\"tagadelic level1\" rel=\"tag\">CSS</a> \n<a href=\"/english/css-0\" class=\"tagadelic level1\" rel=\"tag\">CSS</a> \n<a href=\"/english/customize-0\" class=\"tagadelic level1\" rel=\"tag\">customize</a> \n<a href=\"/english/drupal-0\" class=\"tagadelic level5\" rel=\"tag\">Drupal</a> \n<a href=\"/english/drupal\" class=\"tagadelic level2\" rel=\"tag\">Drupal</a> \n<a href=\"/english/dwmapi-0\" class=\"tagadelic level1\" rel=\"tag\">Dwmapi</a> \n<a href=\"/english/facebook-0\" class=\"tagadelic level1\" rel=\"tag\">Facebook</a> \n<a href=\"/english/finder-0\" class=\"tagadelic level1\" rel=\"tag\">Finder</a> \n<a href=\"/english/freshy-0\" class=\"tagadelic level1\" rel=\"tag\">freshy</a> \n<a href=\"/english/game-0\" class=\"tagadelic level1\" rel=\"tag\">game</a> \n<a href=\"/english/git-0\" class=\"tagadelic level1\" rel=\"tag\">GIT</a> \n<a href=\"/english/github-0\" class=\"tagadelic level1\" rel=\"tag\">github</a> \n<a href=\"/english/grunt-0\" class=\"tagadelic level1\" rel=\"tag\">grunt</a> \n<a href=\"/english/html\" class=\"tagadelic level1\" rel=\"tag\">HTML</a> \n<a href=\"/english/javascript-0\" class=\"tagadelic level2\" rel=\"tag\">javascript</a> \n<a href=\"/english/jidefr-0\" class=\"tagadelic level1\" rel=\"tag\">jide.fr</a> \n<a href=\"/english/jquery\" class=\"tagadelic level1\" rel=\"tag\">jQuery</a> \n<a href=\"/english/jquery-ui\" class=\"tagadelic level2\" rel=\"tag\">jQuery UI</a> \n<a href=\"/english/lamp\" class=\"tagadelic level1\" rel=\"tag\">LAMP</a> \n<a href=\"/english/le-moteur-de-recherche-0\" class=\"tagadelic level1\" rel=\"tag\">le moteur de recherche</a> \n<a href=\"/english/less-0\" class=\"tagadelic level2\" rel=\"tag\">less</a> \n<a href=\"/english/mac-os-x-0\" class=\"tagadelic level1\" rel=\"tag\">Mac OS X</a> \n<a href=\"/english/made-in-france-0\" class=\"tagadelic level1\" rel=\"tag\">made in france</a> \n<a href=\"/english/mobile-0\" class=\"tagadelic level1\" rel=\"tag\">mobile</a> \n<a href=\"/english/mongo-db-0\" class=\"tagadelic level1\" rel=\"tag\">mongo db</a> \n<a href=\"/english/mysql-0\" class=\"tagadelic level1\" rel=\"tag\">MySQL</a> \n<a href=\"/english/nodejs-0\" class=\"tagadelic level1\" rel=\"tag\">nodejs</a> \n<a href=\"/english/openlayers\" class=\"tagadelic level1\" rel=\"tag\">Openlayers</a> \n<a href=\"/english/php-0\" class=\"tagadelic level2\" rel=\"tag\">PHP</a> \n<a href=\"/english/qt-0\" class=\"tagadelic level1\" rel=\"tag\">Qt</a> \n<a href=\"/english/queue-api-0\" class=\"tagadelic level1\" rel=\"tag\">Queue API</a> \n<a href=\"/english/ruby-0\" class=\"tagadelic level1\" rel=\"tag\">Ruby</a> \n<a href=\"/english/rules-0\" class=\"tagadelic level1\" rel=\"tag\">Rules</a> \n<a href=\"/english/vagrant\" class=\"tagadelic level1\" rel=\"tag\">Vagrant</a> \n<a href=\"/english/views\" class=\"tagadelic level1\" rel=\"tag\">Views</a> \n<a href=\"/english/windows-api-0\" class=\"tagadelic level1\" rel=\"tag\">Windows API</a> \n<a href=\"/english/wordpress\" class=\"tagadelic level3\" rel=\"tag\">wordpress</a> \n<a href=\"/english/wordpress-0\" class=\"tagadelic level6\" rel=\"tag\">wordpress</a> \n</div> </div>\n \n \n \n \n \n \n</div> \";}', created = 1513123168, expire = 1513126768, headers = '', serialized = 1 WHERE cid = 'tagadelic:block_1:output:f9d44744f2ad14e08a7fcb35fd44c428' in /home/jideretu/www/includes/cache.inc on line 112.
  • user warning: UPDATE command denied to user 'jideretumysql'@'10.0.66.106' for table 'cache_block' query: UPDATE cache_block SET data = 'a:2:{s:7:\"content\";s:3576:\"<div class=\"view view-tagadelic view-id-tagadelic view-display-id-block_1 view-dom-id-1\">\n \n \n \n <div class=\"view-content\">\n <div class=\"tagadelic_views\"><a href=\"/english/android-0\" class=\"tagadelic level1\" rel=\"tag\">android</a> \n<a href=\"/english/apache-0\" class=\"tagadelic level1\" rel=\"tag\">Apache</a> \n<a href=\"/english/automator-0\" class=\"tagadelic level1\" rel=\"tag\">Automator</a> \n<a href=\"/english/bootstrap-0\" class=\"tagadelic level3\" rel=\"tag\">bootstrap</a> \n<a href=\"/english/canal-0\" class=\"tagadelic level1\" rel=\"tag\">canal +</a> \n<a href=\"/english/command-line-0\" class=\"tagadelic level1\" rel=\"tag\">Command line</a> \n<a href=\"/english/css\" class=\"tagadelic level1\" rel=\"tag\">CSS</a> \n<a href=\"/english/css-0\" class=\"tagadelic level1\" rel=\"tag\">CSS</a> \n<a href=\"/english/customize-0\" class=\"tagadelic level1\" rel=\"tag\">customize</a> \n<a href=\"/english/drupal-0\" class=\"tagadelic level5\" rel=\"tag\">Drupal</a> \n<a href=\"/english/drupal\" class=\"tagadelic level2\" rel=\"tag\">Drupal</a> \n<a href=\"/english/dwmapi-0\" class=\"tagadelic level1\" rel=\"tag\">Dwmapi</a> \n<a href=\"/english/facebook-0\" class=\"tagadelic level1\" rel=\"tag\">Facebook</a> \n<a href=\"/english/finder-0\" class=\"tagadelic level1\" rel=\"tag\">Finder</a> \n<a href=\"/english/freshy-0\" class=\"tagadelic level1\" rel=\"tag\">freshy</a> \n<a href=\"/english/game-0\" class=\"tagadelic level1\" rel=\"tag\">game</a> \n<a href=\"/english/git-0\" class=\"tagadelic level1\" rel=\"tag\">GIT</a> \n<a href=\"/english/github-0\" class=\"tagadelic level1\" rel=\"tag\">github</a> \n<a href=\"/english/grunt-0\" class=\"tagadelic level1\" rel=\"tag\">grunt</a> \n<a href=\"/english/html\" class=\"tagadelic level1\" rel=\"tag\">HTML</a> \n<a href=\"/english/javascript-0\" class=\"tagadelic level2\" rel=\"tag\">javascript</a> \n<a href=\"/english/jidefr-0\" class=\"tagadelic level1\" rel=\"tag\">jide.fr</a> \n<a href=\"/english/jquery\" class=\"tagadelic level1\" rel=\"tag\">jQuery</a> \n<a href=\"/english/jquery-ui\" class=\"tagadelic level2\" rel=\"tag\">jQuery UI</a> \n<a href=\"/english/lamp\" class=\"tagadelic level1\" rel=\"tag\">LAMP</a> \n<a href=\"/english/le-moteur-de-recherche-0\" class=\"tagadelic level1\" rel=\"tag\">le moteur de recherche</a> \n<a href=\"/english/less-0\" class=\"tagadelic level2\" rel=\"tag\">less</a> \n<a href=\"/english/mac-os-x-0\" class=\"tagadelic level1\" rel=\"tag\">Mac OS X</a> \n<a href=\"/english/made-in-france-0\" class=\"tagadelic level1\" rel=\"tag\">made in france</a> \n<a href=\"/english/mobile-0\" class=\"tagadelic level1\" rel=\"tag\">mobile</a> \n<a href=\"/english/mongo-db-0\" class=\"tagadelic level1\" rel=\"tag\">mongo db</a> \n<a href=\"/english/mysql-0\" class=\"tagadelic level1\" rel=\"tag\">MySQL</a> \n<a href=\"/english/nodejs-0\" class=\"tagadelic level1\" rel=\"tag\">nodejs</a> \n<a href=\"/english/openlayers\" class=\"tagadelic level1\" rel=\"tag\">Openlayers</a> \n<a href=\"/english/php-0\" class=\"tagadelic level2\" rel=\"tag\">PHP</a> \n<a href=\"/english/qt-0\" class=\"tagadelic level1\" rel=\"tag\">Qt</a> \n<a href=\"/english/queue-api-0\" class=\"tagadelic level1\" rel=\"tag\">Queue API</a> \n<a href=\"/english/ruby-0\" class=\"tagadelic level1\" rel=\"tag\">Ruby</a> \n<a href=\"/english/rules-0\" class=\"tagadelic level1\" rel=\"tag\">Rules</a> \n<a href=\"/english/vagrant\" class=\"tagadelic level1\" rel=\"tag\">Vagrant</a> \n<a href=\"/english/views\" class=\"tagadelic level1\" rel=\"tag\">Views</a> \n<a href=\"/english/windows-api-0\" class=\"tagadelic level1\" rel=\"tag\">Windows API</a> \n<a href=\"/english/wordpress\" class=\"tagadelic level3\" rel=\"tag\">wordpress</a> \n<a href=\"/english/wordpress-0\" class=\"tagadelic level6\" rel=\"tag\">wordpress</a> \n</div> </div>\n \n \n \n \n \n \n</div> \";s:7:\"subject\";s:4:\"Tags\";}', created = 1513123168, expire = -1, headers = '', serialized = 1 WHERE cid = 'views:tagadelic-block_1:kewl:en:http://www.jide.fr/english/replacing-words-in-a-text-while-keeping-the-capitalization' in /home/jideretu/www/includes/cache.inc on line 112.
  • user warning: UPDATE command denied to user 'jideretumysql'@'10.0.66.106' for table 'cache_filter' query: UPDATE cache_filter SET data = '<p>Follow me : <a href=\"http://twitter.com/jidefr\">jidefr</a></p>\n', created = 1513123168, expire = 1513209568, headers = '', serialized = 0 WHERE cid = '1:fb82f31c75d9dcc2908dc560fa3f9280' in /home/jideretu/www/includes/cache.inc on line 112.
  • user warning: UPDATE command denied to user 'jideretumysql'@'10.0.66.106' for table 'cache_views_data' query: UPDATE cache_views_data SET data = 'a:3:{s:6:\"result\";a:1:{i:0;O:8:\"stdClass\":3:{s:10:\"twitter_id\";s:18:\"937070315510861824\";s:12:\"twitter_text\";s:143:\"RT @PhilippeCorbe: Si vous avez du mal à comprendre l\'affaire russe, et l\'importance de l\'information du jour, le plaider coupable de l\'anc…\";s:20:\"twitter_created_time\";s:10:\"1512249947\";}}s:10:\"total_rows\";N;s:5:\"pager\";a:5:{s:9:\"use_pager\";s:1:\"0\";s:14:\"items_per_page\";i:1;s:7:\"element\";i:0;s:6:\"offset\";i:0;s:12:\"current_page\";i:0;}}', created = 1513123168, expire = 1513126768, headers = '', serialized = 1 WHERE cid = 'tweets:block:results:72324ccbb847e44714310307270aae76' in /home/jideretu/www/includes/cache.inc on line 112.
  • user warning: UPDATE command denied to user 'jideretumysql'@'10.0.66.106' for table 'cache_views_data' query: UPDATE cache_views_data SET data = 'a:4:{s:4:\"head\";s:0:\"\";s:3:\"css\";a:0:{}s:2:\"js\";a:3:{i:0;a:5:{i:0;s:38:\"sites/default/modules/views/js/base.js\";i:1;s:6:\"module\";i:2;s:6:\"header\";i:3;b:0;i:4;b:1;}i:1;a:5:{i:0;s:43:\"sites/default/modules/views/js/ajax_view.js\";i:1;s:6:\"module\";i:2;s:6:\"header\";i:3;b:0;i:4;b:1;}i:2;a:3:{i:0;a:1:{s:5:\"views\";a:2:{s:9:\"ajax_path\";s:19:\"/english/views/ajax\";s:9:\"ajaxViews\";a:1:{i:0;a:7:{s:9:\"view_name\";s:6:\"tweets\";s:15:\"view_display_id\";s:5:\"block\";s:9:\"view_args\";s:0:\"\";s:9:\"view_path\";s:8:\"node/205\";s:14:\"view_base_path\";N;s:11:\"view_dom_id\";i:2;s:13:\"pager_element\";i:0;}}}}i:1;s:7:\"setting\";i:2;s:6:\"header\";}}s:6:\"output\";s:732:\"<div class=\"view view-tweets view-id-tweets view-display-id-block view-dom-id-2\">\n \n \n \n <div class=\"view-content\">\n <div class=\"views-row views-row-1 views-row-odd views-row-first views-row-last\">\n \n <span class=\"views-field-text\">\n <span class=\"field-content\">RT <a target=\"_blank\" rel=\"nofollow\" href=\"http://twitter.com/PhilippeCorbe\">@PhilippeCorbe</a>: Si vous avez du mal à comprendre l\'affaire russe, et l\'importance de l\'information du jour, le plaider coupable de l\'anc…</span>\n </span>\n &#8212; \n <span class=\"views-field-created-time\">\n <span class=\"field-content\"><em>1 week 3 days</em> ago</span>\n </span>\n </div>\n </div>\n \n \n \n \n \n \n</div> \";}', created = 1513123168, expire = 1513126768, headers = '', serialized = 1 WHERE cid = 'tweets:block:output:7475b0b3516412a48129b88a1bae2ce5' in /home/jideretu/www/includes/cache.inc on line 112.
  • user warning: UPDATE command denied to user 'jideretumysql'@'10.0.66.106' for table 'cache_block' query: UPDATE cache_block SET data = 'a:2:{s:7:\"subject\";s:15:\"Recent Comments\";s:7:\"content\";s:187:\"<div id=\"dsq-recentcomments\" class=\"dsq-widget\"><script type=\"text/javascript\" src=\"http://disqus.com/forums/jide/recent_comments_widget.js?num_items=1&amp;hide_avatars=1\"></script></div>\";}', created = 1513123168, expire = -1, headers = '', serialized = 1 WHERE cid = 'disqus:disqus_recent_comments:kewl:en' in /home/jideretu/www/includes/cache.inc on line 112.

I had to replace words in a text while keeping the capitalization in Javascript.

Given the text :
"It is a good burger. Or an hamburger. Burger is good".

With the replacement word "sandwich", it should become :
"It is a good sandwich. Or an hamburger. Sandwich is good".

It has 2 challenges :

  • Match only real words, e.g. match "burger", but not "hamburger"
  • Keep the capitalization of the word, e.g. "Burger" should become "Sandwich"

For the first one, we should use lookahead and lookbehind features of regular expressions, but unfortunately, in javascript there is no lookbehind, so we have to capture that part and return it with the result.

So here we go :
var replace = function(text, r, v) {
return text.replace(new RegExp('([^a-z])('+r+')|(^'+r+')(?=[^a-z]?)', "gi"), function(match, p1, p2, p3, offset, string) {
p1 = p1 || '';
p2 = p2 || p3;
if (p2[0].toUpperCase() == p2[0]) {
// Assume its all caps.
if (p2[1].toUpperCase() == p2[1]) {
v = v.toUpperCase();
}
// Assume its capitalized.
else {
v = v[0].toUpperCase() + v.slice(1);
}
}
return p1 + v;
});
}

Test it:
var text = "It is a good burger. Or an hamburger. Burger is good";
console.log(text + "\n" + replace(text, 'burger', 'sandwich'));


Warning: INSERT command denied to user 'jideretumysql'@'10.0.66.106' for table 'watchdog' query: INSERT INTO watchdog (uid, type, message, variables, severity, link, location, referer, hostname, timestamp) VALUES (0, 'php', '%message in %file on line %line.', 'a:4:{s:6:\"%error\";s:12:\"user warning\";s:8:\"%message\";s:0:\"\";s:5:\"%file\";s:37:\"/home/jideretu/www/includes/cache.inc\";s:5:\"%line\";i:112;}', 3, '', 'http://www.jide.fr/english/replacing-words-in-a-text-while-keeping-the-capitalization', '', '54.163.61.66', 1513123168) in /home/jideretu/www/includes/database.mysql.inc on line 135

Warning: INSERT command denied to user 'jideretumysql'@'10.0.66.106' for table 'watchdog' query: INSERT INTO watchdog (uid, type, message, variables, severity, link, location, referer, hostname, timestamp) VALUES (0, 'php', '%message in %file on line %line.', 'a:4:{s:6:\"%error\";s:12:\"user warning\";s:8:\"%message\";s:429:\"UPDATE command denied to user &#039;jideretumysql&#039;@&#039;10.0.66.106&#039; for table &#039;sessions&#039;\nquery: UPDATE sessions SET uid = 0, cache = 0, hostname = &#039;54.163.61.66&#039;, session = &#039;messages|a:1:{s:5:\\&quot;error\\&quot;;a:1:{i:0;s:68:\\&quot;user warning: in /home/jideretu/www/includes/cache.inc on line 112.\\&quot;;}}&#039;, timestamp = 1513123168 WHERE sid = &#039;8ft6ighff1iio97rppe2v1r7s5&#039;\";s:5:\"%file\";s:39:\"/home/jideretu/www/includes/session.inc\";s:5:\"%li in /home/jideretu/www/includes/database.mysql.inc on line 135