2017-05-31 21 views
1

Ruby 2.4を使用して、文字列中のUnicode文字のインスタンス数をどのように数えますか? 「AZ」のようなものをカバーしていますので、私はむしろ、「AZ」よりも、上記の式を使用したい文字列中のUnicode文字のインスタンスを数える方法

2.4.0 :009 > string = "a" 
=> "a" 
2.4.0 :010 > string.count('\p{L}') 
=> 0 

を、それは0を表示しています、そして、それは

1を返すべきである:私がしようとしていますアクセント付きのe。これは一時的な配列を作成しない方法である

string = "aá" 
p string.scan(/\p{L}/).count 
# 2 
+1

「スキャン」と「カウント」を試すことができますか? 'string.scan(/ \ p {L} /)。count' –

+0

これは期待される結果を返します。ありがとう – Dave

+0

"それは1を返すべきです" - なぜですか?ドキュメントによれば、 '' \ '、 '' p' '、' '{' '、' 'L ''、 ''}' 'の数を数えています。何もありません、それは '0'を返しているはずです。 –

答えて

0

count方法をチェーン。

str = "Même temps l'année prochaine." 

str.size - str.gsub(/[[:alpha:]]/, '').size 
    #=> 24 

POSIXブラケット表現[[:alpha:]]\p{Alpha}(別名\p{L})と同じです。

str.gsub(/[[:alpha:]]/, '') 
    #=> " ' ." 
0

:あなたは、あなたの\p{L}正規表現を渡し、String#scanを使用してみてください、そして可能性があり

関連する問題