Como posso somar um conjunto de números intercalados com texto na região (não uma região retangular). Por exemplo, se a região contiver este texto:
Widgets 234
Sprockets 44
Nubbins 12
Fork handles 4
4 Candles
Estou procurando um comando que reportará 298 de alguma forma (298 = 234 + 44 + 12 + 4 + 4) - acho que ecoando isso na área de mensagem ou inserindo-o no buffer.
Idealmente, ele lidaria com números inteiros e números de ponto flutuante.
Respostas:
Aqui está um:
Por usar
string-to-number
, ele tratará o token "1hello" como o número "1", mas não tratará "hello2" como um número. Também funciona com decimais (por exemplo, 2.4).fonte
Especificamente para o seu caso, supondo que este seja o texto inteiro do buffer:
replace-regexp
RET[^0-9]+
RET+
RETfonte
calc
solução: marque a região,C-x * g
para pegar,V u
(calc-unpack
) e depois toque em+
até somar todos os números.Não conheço um comando interno que faça isso, mas você pode criar o seu:
fonte