2012-09-07 61 views
-1

尋找一種方式來總結所有唯一字符串中的字符,所以如果字符串是:PowerShell腳本來總結每個字符的字符串

!#*@&$&$&@^$*%(%&# 

腳本將輸出

1 ! found 

2 # found 

2 * found 

2 @ found 

4 & found 

3 $ found 

1^found 

等..

我發現了很多方法來操縱字符串,但不是這個。任何幫助將統治! 感謝

回答

9

打破字符串轉換成單獨的字符,並將其組:

PS> '!#@&$&$&@^$%(%&#'.ToCharArray() | Group-Object -NoElement | Sort-Object Count -Descending 

Count Name 
----- ---- 
    4 & 
    3 $ 
    2 # 
    2 @ 
    2 % 
    1 ! 
    1^
    1 (

如果將結果保存到一個變量,你可以在以後得到第一個項目使用數組索引(最常見的字符)(感謝@ JNK)。

PS> $chars = '!#@&$&$&@^$%(%&#'.ToCharArray() | Group-Object ... 
PS> $chars[0] 

Count Name 
----- ---- 
    4 & 
+0

不錯! OP應該知道他可以將該行包裝在圓括號中,並且如果他想要像索引那樣進行操作或將值拉回到字符串中,就可以將其視爲數組。 – JNK

+0

謝謝。是的,字符串索引是另一種選擇,但IMO不太受歡迎,因爲您需要知道字符串的長度,創建for循環,迭代所有字符並自己對字符進行求和。 –

+0

對不起,我不是指字符串索引。我的意思是,如果他想知道最常用的字符是什麼,他可以將您的行放在括號和索引中[[0]]中,將其當作數組或集合對待。 – JNK

相關問題