Opuesto a Split en PowerShell (sin cmdlet)
Frecuentes
Visto 7,405 veces
3
¿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!
3 Respuestas
15
Hay un operador de unión en Powershell:
$tmp -join "."
Respondido el 12 de junio de 12 a las 09:06
5
$result = [string]::join(".", $array)
Respondido el 12 de junio de 12 a las 09:06
3
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 powershell or haz tu propia pregunta.
Este tiene la marca de verificación verde, pero vea también la respuesta de jon Z. - dan-gph