Búsqueda de sitios web

Contar las apariciones de caracteres en una cadena en PowerShell [4 formas]


Usando el operador -replace

Para contar las apariciones de un carácter en una cadena en PowerShell:

  • Utilice el operador -replace para reemplazar las apariciones del carácter especificado con una cadena vacía y almacene el resultado en una cadena temporal.
  • Utilice la propiedad .Length para obtener la longitud de la cadena original y temporal.
  • Resta la longitud de la cadena temporal de la cadena original para obtener el recuento de caracteres.

Utilice el operador -replace:

$string = "my_string"
$character = 'm'
$temp_string = ($string -replace $character,"")
$count = $string.Length - $temp_string.Length
Write-Output "Occurence frequency of '$character' in '$string' is $count"

PRODUCCIÓN :

Occurence frequency of 'm' in 'my_string' is 1

El operador -replace en PowerShell reemplaza uno o más caracteres o cadenas especificados por otra cadena. Devuelve una nueva cadena sin modificar la cadena original. Se necesitan dos argumentos:

  • El primero es el valor que queremos reemplazar.
  • El segundo es el valor con el que queremos reemplazar el primero.

También podemos eliminar caracteres específicos de una cadena usando el operador -replace para reemplazar caracteres particulares con una cadena vacía. Por ejemplo, utilizamos este operador para eliminar las apariciones del carácter de la cadena reemplazándolas con cadenas vacías. Almacenamos el resultado de la operación de reemplazo en un temp_string.

En PowerShell, la clase System.String en .NET Framework representa una secuencia de caracteres Unicode. Proporciona varios métodos y propiedades para trabajar con cadenas. Por ejemplo, su propiedad Longitud devuelve el número de caracteres de una cadena.

La propiedad .Length se combina con el operador -replace para determinar cuántas veces aparece un carácter específico en una cadena. Por ejemplo, usamos esta propiedad para contar el número de caracteres en string y temp_String. El temp_string contiene caracteres distintos del character. Por lo tanto, restamos la longitud de temp_string de string para obtener la frecuencia de aparición del carácter en string.

Usando el método .Split()

Para obtener la frecuencia de aparición de un carácter en una cadena en PowerShell:

  • Utilice el método .Split() para dividir la cadena en una matriz de subcadenas que especifican el carácter como delimitador.
  • Utilice la propiedad .Count para obtener el número de elementos de la matriz, que será el número de apariciones del carácter en la cadena original.

Usando el método .Split():

$string = "my_string"
$character = 'm'
$count = ($string.Split($character)).count-1
Write-Output "Occurence frequency of '$character' in '$string' is $count"

PRODUCCIÓN :

Occurence frequency of 'm' in 'my_string' is 1

El método .Split() de la clase System.String divide una cadena en una matriz de subcadenas según el delimitador dado. El delimitador es un carácter o un conjunto de caracteres que separan las subcadenas. La matriz resultante contendrá todas las subcadenas que estaban en la cadena original pero no el delimitador. Por ejemplo, aplicamos el método .Split() en la string para dividirla considerando el character como delimitador.

Sin embargo, la propiedad .Count es una propiedad de la interfaz System.Collections.ICollection y devuelve el número de elementos de una colección. Por lo tanto, puede obtener la cantidad de elementos de una matriz. Por ejemplo, usamos esta propiedad para obtener la cantidad de elementos en la matriz resultante.

Tenga en cuenta que el recuento devuelto es 1 menor que el número total de apariciones. Esto se debe a que el recuento devuelve el número de elementos de la matriz creada al dividir la cadena original que no incluye el delimitador. Entonces restamos 1 de la salida para obtener la frecuencia de aparición exacta.

Usando el método .ToCharArray()

Para obtener el recuento de apariciones de un carácter en una cadena en PowerShell:

  • Utilice el método .ToCharArray() para convertir la cadena en una matriz de caracteres.
  • Utilice el cmdlet Where-Object para filtrar solo los elementos de la matriz que son iguales al carácter.
  • Utilice la propiedad .Count para contar el número de elementos en la matriz filtrada.

Utilice el método .ToCharArray():

$string = "my_string"
$character = 'm'
$count = ($string.ToCharArray() | Where-Object {$_ -eq $character}).count
Write-Output "Occurrence frequency of '$character' in '$string' is $count"

PRODUCCIÓN :

Occurrence frequency of 'm' in 'my_string' is 1

El método .ToCharArray() de la clase System.String convierte un objeto en PowerShell en una matriz unidimensional de caracteres. La matriz resultante contiene un elemento por cada carácter de la cadena original. Podemos utilizar este método para realizar operaciones con caracteres individuales de una cadena o para manipular la cadena como una matriz de caracteres. Por ejemplo, utilizamos este método para convertir la cadena en una matriz de caracteres.

El operador de canalización (|) pasa la salida de un comando o cmdlet como entrada a otro comando o cmdlet. Usamos el operador de tubería para procesar la salida del método .ToCharArray().

El cmdlet condicional Where-Object filtra una colección de objetos en PowerShell. Filtramos la salida del método .ToCharArray() donde el elemento es igual al character especificado usando el operador -eq.

Discutimos la propiedad .Count mientras explicamos la sección de código para usar el método .Split(). En esta sección, utilizamos esta propiedad para contar el número de elementos en la matriz filtrada, que será el número de apariciones del carácter en la cadena original.

Usando el método [regex]::matches()

Para calcular la frecuencia de aparición de un carácter en una cadena en PowerShell, utilice el método [regex]::matches() con el parámetro .Count. fuerte>

Utilice el método coincidencias():

$string = "my_string"
$character = 'm'
$count = [regex]::matches($string, $character).count
Write-Output "Occurence frequency of '$character' in '$string' is $count"

PRODUCCIÓN :

Occurence frequency of 'm' in 'my_string' is 1

En PowerShell, [regex]::matches() es un método estático de la clase System.Text.RegularExpressions.Regex que encuentra todas las coincidencias de una expresión en un determinado cadena de entrada.

El método [regex]::matches() toma dos argumentos:

  • El primer argumento es un patrón de expresión o carácter que queremos hacer coincidir.
  • El segundo argumento es la cadena de entrada, donde queremos encontrar las coincidencias.

Por ejemplo, utilizamos este método para buscar las apariciones de carácter en la cadena. En el resultado de este método, utilizamos el parámetro .Count para calcular la frecuencia de aparición.

Tenga en cuenta que este método es menos eficiente que los demás que analizamos anteriormente, ya que devuelve un objeto System.Text.RegularExpressions.MatchCollection, que contiene un objeto System.Text.RegularExpressions.Match objeto para cada coincidencia encontrada mientras que los demás usan operaciones de cadena.

Se trata de cómo contar las apariciones de caracteres en String en PowerShell.

Artículos relacionados