Opuesto a Split en PowerShell (sin cmdlet)

¿Cuál es la función opuesta de la siguiente?

    $tmp = $domain.split(".")

En otras palabras, ¿cómo transfiero una matriz a una cadena? He oído hablar de "unirse", pero no puedo hacerlo funcionar.

Sin cmdlet, sin búsqueda, ¡esto tiene que funcionar con PowerShell v1 y todos los sistemas más antiguos!

preguntado el 12 de junio de 12 a las 08:06

3 Respuestas

Hay un operador de unión en Powershell:

$tmp -join "."

Respondido el 12 de junio de 12 a las 09:06

$result = [string]::join(".", $array)

Respondido el 12 de junio de 12 a las 09:06

Este tiene la marca de verificación verde, pero vea también la respuesta de jon Z. - dan-gph

Además del operador Join (introducido en v2) y el método Join de .NET, también puede cambiar el valor de la variable especial $ OFS (Ouptut Field Seperator) a un punto (el valor predeterminado es un espacio) y encierre tmp entre comillas:

PS> $tmp = "foo.domain.com".split(".")
PS> & {$ofs='.';"$tmp"}
foo.domain.com

En el ejemplo anterior, cambié $ OFS en un bloque de script para evitar que cambie en el ámbito global (los bloques de script crean un ámbito anidado)

Respondido el 12 de junio de 12 a las 09:06

Ah, Shay, he leído muchos de tus tutoriales y debo decir que no me decepcionas. Sigue con el buen trabajo hombre. - Sobre este tema, me sorprende que no exista una función simple como la función "implosión()" de PHP. Que mundo en el que vivimos eh. - basickarl

Gracias @KarlMorrison, no estoy familiarizado con la función Implode pero puedes crear una: function implode($array,$delimiter) { $array -join $delimiter }; implosionar $tmp '.' - shay levy

Los bloques de secuencias de comandos NO crean un alcance anidado. - Noche

@Nacht Compruébalo tú mismo. - shay levy

lo que quiero decir es que es el ampersand el que crea un alcance separado, ya que puede ejecutar bloques de secuencias de comandos con un . y se ejecutaría en el mismo ámbito. lo más importante, los bloques de secuencias de comandos para foreach y while no se ejecutan en un ámbito separado. tal vez sea porque técnicamente no son bloques de secuencias de comandos... pero aún así es fácil quemarse en eso: Noche

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.