0

I am trying to figure out how to insert a character after a lower case letter but before an upper case letter in a string wherever it occurs. For instance, with the string "HiMyNameIsBob", if I were inserting spaces I would want it to return "Hi My Name Is Bob". I want to do something similar to what replace() does. I am using JavaScript.

If the answer involves any use of regular expressions, an explanation of the regular expression(s) used would be nice.

Queen Code
  • 129
  • 2
  • 9

2 Answers2

2
var string = 'HiMyNameIsBob';
string = string.replace(/([a-z])([A-Z])/g, '$1 $2')

will insert a space after each occurrence of a lower case character followed by an upper case character.

[a-z] any lower char from a to z
[A-Z] any upper char from a to z
  /g means global
  '$1 $2' are wildcards
Nico
  • 6,259
  • 4
  • 24
  • 40
  • 1
    Considering [this answer already exists](http://stackoverflow.com/a/4149612/5743988), this question should be closed as a duplicate. – 4castle Jul 18 '16 at 22:33
0
var insertSpace = function(string) {
  var chars = string.split('');
  var insert = ' ';

  for (var i = 0; i < string.length; i++) {
    var char = chars[i];
    var nextChar = chars[i + 1] || null;
    if (char === char.toLowerCase() && nextChar === nextChar.toUpperCase()) {
      chars.splice(i + 1, 0, insert);
      i++;
    }
  }

  return chars.join('');
}
aezed
  • 1
  • 1