> Hello to all readers,
>
> I use submatch() to increment/decrement numbers in a text.
>
> My questions are:
> 1) In my country the "comma" is seen as decimal separator.
> submatch() doesn't seem to recognize the comma but use the "dot"
> as separator.
> Is there a way to let submatch() know that the decimal separator in the
> text is the comma?
> 2) Often the numbers in my text have thousand separators.
> submatch() doesn't recognize them.
> %s/1.000.000/\=submatch(0) + 10/g gives as output 11
> How can I tell submatch that dots are thousand separators?
> 3) In my text I have integers and float values.
> If I use %s/"a search string"/\=string2float(submatch(0)) [+-]nr/g all
> non float values have ".0" after the conversion.
> If I use %s/"a search string"/\=submatch(0) [+-]nr/g there are no decimals
> added after the conversion when there are float values.
> How can I let submatch() know that it has to make a float value when
> the increment/decrement value or the number self is a float, else it has
> to see the value as integer?
>
> Tnx,
> Rameo
John,
I don't know exactly what you think is not clear in my question and how examples can help to clarify.
In text what I use the comma is the decimal separator.
The dot is a thousand separator.
submatch() doesn't recognize the thousand separator and doesn't recognize the comma as decimal separator.
submatch() handles different regional settings as the one in my country.
Is there a way to let submatch() my regional settings?
If not .. do I have to convert all xx,xx numbers to xx.xx numbers (substitute dot for comma) and all x.xxx.xxx numbers to xxxxxxx numbers (removing the thousand separator)?
p.e.
see these examples:
please put these values in a new buffer:
1.000.000 25,20 10.15 200
These are the the different examples:
%s/1.000.000\|25,20\|10.15\|200/\=submatch(0) + 10/g
output: 11 35 20 210
What I expected: 1.000.010 35,20 (or 35) -- 210
%s/1.000.000\|25,20\|10.15\|200/\=submatch(0) + 1.000/g
output: 2.0 26.0 11.0 201.0
What I expected: 1.001.000 1025 - 1.200
%s/1.000.000\|25,20\|10.15\|200/\=str2float(submatch(0)) + 10,0/g
output: invalid expression
What I expected: 1.000.010,0 35,20 -- 210,0
%s/1.000.000\|25,20\|10.15\|200/\=str2float(submatch(0)) + 1.000/g
output: 2.0 26.0 11.15 201.0
What I expected: 1.001.000 1025,20 -- 1.200
--
You received this message from the "vim_use" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php
No comments:
Post a Comment