2012-03-26 19 views
4

我想要一個bash函數來計算顯示時將要顯示的字符串寬度。 ,因爲在我的情況下,字符串可能包含一些寬字符(例如中文)。所以我不能只使用一個字符串的長度。在bash腳本中,howto得到一個字符串的顯示寬度

function getDisplayWidth() 
{ 
    ??? 
} 

然後 「ABC」 將返回3 和 「前後」 應該返回4而不是2

回答

4

如果您的wc的實施具有-L選項,那麼似乎計算正確的「事情」。 (Coreutils的有之,不知道是否有任何其他事情。)

例:

$ getw() { wc -L <<< "$1"; } 
$ getw 前後 
4 
$ getw 前a後c 
6 
$ getw abc前後 
7 
$ getw "行書/行書" 
11 
+0

'wc -L <<<「$ 1」' – 2012-03-26 06:54:28

+0

@ IgnacioVazquez-Abrams:是的,謝謝。 – Mat 2012-03-26 06:59:38

+0

@Mat:謝謝,這一行功能太棒了! – Nybble 2012-03-27 04:14:38

0

嘗試wc -m。從os x手冊頁:

將每個輸入文件中的字符數寫入標準的 輸出。如果當前語言環境不支持多字節字符,則這與-c選項等效。這將取消以前使用-c選項的 。

+0

'WC -m'會給2與他品嚐中國的文字 - 只有兩個字符。 – Mat 2012-03-26 06:43:29

+0

哎呀,向後讀這個問題。抱歉! – phs 2012-03-26 17:49:39

相關問題