Quiero insertar \n en el segundo espacio de una cadena, por ejemplo, si una cadena tiene más de 1 espacio, significa que puedo agregar \n en el segundo espacio, si no, significa que es solo una palabra o un cadena con un espacio y me gustaría tener y en else lugar donde pueda imprimirlo normal, así que en este ejemplo, tengo Hi I am here testing la cadena, luego me gustaría reemplazar el segundo espacio con \n entonces sería Hi I\nam here testing para que en la consola imprima esa cadena de la siguiente manera:
Hi I am here testing Estaba tratando de hacer esto con replace(/ /g,"\n") pero reemplaza todos los espacios. Espero que alguien me pueda ayudar, gracias.
Una posibilidad sería usar una expresión regular para hacer coincidir desde el inicio de la cadena hasta el segundo grupo de espacios (1 o más) y reemplazar ese conjunto de espacios con una nueva línea:
const str = 'Hi I am here testing' const regex = /^(\S+\s+\S+)\s+/ const result = str.replace(regex, '$1\n') console.log(result)Otra posibilidad es dividir la cadena en espacios y luego volver a unirla con una nueva línea que reemplace el espacio entre la segunda y la tercera palabra:
const str = 'Hi I am here testing' const parts = str.split(/(\s+)/) const result = parts.slice(0, 3).join('') + '\n' + parts.slice(4).join('') console.log(result)puedes hacerlo con foreach de una manera fácil
var myname = "alex is software engineer"; myname = myname.split(""); var actualString = ""; var spaceCounter = 0; myname.forEach(element => { if(element != " ") { actualString += element; } else { spaceCounter++; if(spaceCounter == 2) { actualString +="\n"; return; } else { actualString += " "; } } }); console.log(actualString);Una solución sencilla:
function breakLineOnSecondSpace(sentence) { const SPACE = ' '; var spaceCount = 0; var secondSpaceIndex = -1; for (var i = 0; i < sentence.length; i++) { var char = sentence[i]; if (char == SPACE) spaceCount++; if (spaceCount === 2) { secondSpaceIndex = i; break; } } if (secondSpaceIndex > -1) { return [ sentence.substring(0, secondSpaceIndex), sentence.substring(secondSpaceIndex + 1, sentence.length), ].join('\n'); } else { return sentence; } } console.log(breakLineOnSecondSpace('Hi I am here testing'));Ejemplo de trabajo: Stackblitz