Get Palabras

Una funcion para contar las palabars de un texto.

A raiz de una conversacion se me ocurrio crear esta funcion que puede ayudar a contar palabras en un texto deterinado.

 1function Global:Get-Palabras {#Espublico
 2<#
 3.SYNOPSIS
 4  Cuenta palabras dentro de un fichero ejemplo de funcion privada y funcion global
 5.DESCRIPTION
 6  Se obtendra el la cantidad de palabras que contiene un texto
 7.PARAMETER Fichero
 8    Rutal del archivo a analizar
 9.PARAMETER Repetido
10   Por defecto no se contaran palabras repetidas
11   Si desea obtener el total de palabras asigne  $false
12.INPUTS
13  Archivo en texto plano
14.OUTPUTS
15  Integer numero de palabras
16.NOTES
17  Version:        1.1
18  Author:         Felipoyo
19  Creation Date:  13/05/2021
20  Purpose/Change: Se agrega funcionalidad de palabras repetidas.
21  
22.EXAMPLE
23  Get-Palabras -Fichero "C:\Users\XXXXX\Desktop\palabras.txt"  
24  Get-Palabras -Fichero "C:\Users\XXXXX\Desktop\demowords.txt"  -Repetido:$false
25#>
26    Param(
27        # Parametro: Fichero : Obligatorio, String
28        [Parameter(Mandatory=$true)]
29        [ValidateScript({Test-Path $_ -PathType 'Leaf'})]
30        [string]
31        $Fichero,
32        #Parametro: Repetido : Opcional, Boolean = $true
33        [bool]
34        $Repetido = $true #valur por default
35    )
36        function  Private:Find-Contenido{#Es privada
37         Param(
38        [Parameter(Mandatory=$true)]
39        [ValidateScript({Test-Path $_ -PathType 'Leaf'})]
40        [string]
41        $Ruta
42 
43        )
44    $contenido = Get-Content -LiteralPath $Ruta
45    $contenido| foreach{
46    $linea = $_
47    $palabrasdelinea = $linea.replace(".;,`r`n`0","").Split(" ").Split("`t")
48    $palabras += $palabrasdelinea
49    Return  $palabras
50}
51}
52    $palabras = @()
53    Write-debug "Contando palabras del archivo $($Fichero)"
54   
55    $palabras = Find-Contenido -Ruta $Fichero
56 
57    if($Repetido -eq $false){
58      
59      $resultado  =  $($palabras | Where-Object { $_ -ne "" }).count
60    
61     }else{
62     $resultado  =   $($palabras | Where-Object { $_ -ne "" } | select  -Unique).count
63     
64     }
65    Return [int]$resultado
66
67}