如何计算以大写字母开头的数组中的单词

时间:2018-10-03 19:44:35

标签: ruby string capitalization

我正在处理一个包含Twitter句柄的数组,例如:

<tr class="google-visualization-table-tr-even">
  <td class="google-visualization-table-td">TC-206</td>
  <td class="google-visualization-table-td">Customer logs in</td>
  <td class="google-visualization-table-td">Fail</td>
  <td class="google-visualization-table-td">Fail</td><td class="google-visualization-table-td">Fail</td>
  <td class="google-visualization-table-td">Pass</td>
  <td class="google-visualization-table-td">Fail</td>
  <td class="google-visualization-table-td">Pass</td>
</tr>

<tr class="google-visualization-table-tr-odd">
  <td class="google-visualization-table-td">TC-207</td>
  <td class="google-visualization-table-td">Customer signs out</td>
  <td class="google-visualization-table-td">Fail</td>
  <td class="google-visualization-table-td">Fail</td>
  <td class="google-visualization-table-td">Fail</td>
  <td class="google-visualization-table-td">Fail</td>
  <td class="google-visualization-table-td">Pass</td>
  <td class="google-visualization-table-td">Pass</td>
</tr>

我想知道有多少个以大写字母开头的句柄。

3 个答案:

答案 0 :(得分:4)

如果问题是“一个集合中有多少个”,那么count很可能是一个解决之道。 正则表达式gcloud functions deploy some_function --runtime python37 --trigger-resource bucket --trigger-event google.storage.object.finalize --memory 2048 --timeout 500 的好处是它匹配A-Z以外的大写字母。

/[[:upper:]]/

答案 1 :(得分:3)

即使有一个公认的答案,我也觉得值得一提,使用#count而不是#inject可以实现相同的目的:

array = ["@user1","@User2","@uSer3","@User4"]

capital_letters = ('A'..'Z')

array.count {|x| capital_letters.include?(x[1])}
#=> 2

如果将块分配给#count方法,它将计算该块为其返回真值的元素数。在这种情况下,如果数组x[1]的第二个字母是从A到Z的大写字母,则该块的值为true。这在假设数组中的每个字符串都以"@"开头的情况下起作用

答案 2 :(得分:-1)

我使用了正则表达式来匹配@,然后在字符串的开头匹配大写字母。

count是最语义的功能(感谢@crenmo)

array.count {|e| e =~ /^@[A-Z]/}

select在您需要匹配元素列表以及(可选)大小的情况下很有用:

array.select {|e| e =~ /^@[A-Z]/ }.size

Try it!

如果您希望匹配非英语大写字母(感谢@CarySwoveland),请使用[[:upper:]]而不是[A-Z]

作为参考,可以使用括号表示法索引到字符串中(尽管我并没有使用它):str[0]