Will "VARA CIVIL" always be in the string?

Solved

Posted on 2010-11-24

hello everybody.. im in a bit of problem now..

i need to find roman numerals in a string and convert it to int eg:

"XIV VARA CIVIL" = int 14

"VARA CIVIL XX" = int 20

does anyone know if there is any method for it in web? maybe a regex to find could work but i have no clue or time to make such conversor

thx for the help!

i need to find roman numerals in a string and convert it to int eg:

"XIV VARA CIVIL" = int 14

"VARA CIVIL XX" = int 20

does anyone know if there is any method for it in web? maybe a regex to find could work but i have no clue or time to make such conversor

thx for the help!

5 Comments

Will "VARA CIVIL" always be in the string?

the roman numerals could be anywhere in the string (most of the time they are at either the beggining or at the end, but i cant be sure if that would be always the case)

but the text it will be different everytime.

is it possible to do such thing ?

string y = "VARA CIVIL XX";

string[] x = y.Split(' ');

this makes anarray of strings

x[0] = "VERA"

x[1] = "CIVIL"

x[2] = "XX"

then try each value in the string array x to see if it is a valid roman numeral.

Here is a link to an example of how to convert a roman numeral to a number.

http://www.blackwasp.co.uk

(?i)\b(?=[ivxlcdm]+)M{0,4}

Based on, but slightly modified from, a pattern from: http://stackoverflow.com/q

That would capture only valid roman numerals, I believe - then you'd have to convert them to an integer.

```
<script language="javascript">
<!--
function Level(i, v, x)
{
this.i = i;
this.v = v;
this.x = x
}
levels = new Array();
levels[0] = new Level('I', 'V', 'X');
levels[1] = new Level('X', 'L', 'C');
levels[2] = new Level('C', 'D', 'M');
function calcDigit(d, l)
{
if (l > 2)
{
str = '';
for (var m = 1; m <= d * Math.pow(10, l - 3) ; m++)
str += 'M';
return str
}
else
if (d == 1)
return levels[l].i
else
if (d == 2)
return levels[l].i + levels[l].i
else
if (d == 3)
return levels[l].i + levels[l].i + levels[l].i
else
if (d == 4)
return levels[l].i + levels[l].v
else
if (d == 5)
return levels[l].v
else
if (d == 6)
return levels[l].v + levels[l].i
else
if (d == 7)
return levels[l].v + levels[l].i + levels[l].i
else
if (d == 8)
return levels[l].v + levels[l].i + levels[l].i + levels[l].i
else
if (d == 9)
return levels[l].i + levels[l].x
else
return ''
}
function toRoman(n)
{
var r = ''
for (var c = 0; c < n.length; c++)
r += calcDigit(eval(n.charAt(c)), n.length - c - 1);
return r
}
function fromRoman(n)
{
var r = 0
for (var c = 0; c < n.length; c++)
{
var chr = n.charAt(c).toLowerCase();
if (c < n.length - 1)
var next = n.charAt(c + 1).toLowerCase()
else
var next = '';
if (c > 0)
var prev = n.charAt(c - 1).toLowerCase()
else
var prev = '';
if (chr == 'i')
{
if (next == 'v')
r += 4
else
if (next == 'x')
r += 9
else
r += 1;
continue
}
if (chr == 'v')
{
if (prev != 'i')
r += 5;
continue
}
if (chr == 'x')
{
if (prev != 'i')
if (next == 'l')
r += 40
else
if (next == 'c')
r += 90
else
r += 10;
continue
}
if (chr == 'l')
{
if (prev != 'x')
r += 50;
continue
}
if (chr == 'c')
{
if (prev != 'x')
if (next == 'd')
r += 400
else
if (next == 'm')
r += 900
else
r += 100;
continue
}
if (chr == 'd')
{
if (prev != 'c')
r += 500;
continue
}
if (chr == 'm')
{
if (prev != 'c')
r += 1000;
continue
}
}
return r
}
function isNuneric(str)
{
for (var c = 0; c < str.length; c++)
{
var chr = str.charAt(c);
if (chr != '0' & chr != '1' & chr != '2' & chr != '3' & chr != '4' & chr != '5' & chr != '6' & chr != '7' & chr != '8' & chr != '9')
return false
}
return true
}
function get(f)
{
var n = f.elements[0].value
if (!isNuneric(n))
{
for (var c = 0; c < n.length; c++)
{
var chr = n.charAt(c).toLowerCase();
if (chr != 'i' & chr != 'v' & chr != 'x' & chr != 'l' & chr != 'c' & chr != 'd' & chr != 'm')
{
alert ('Only the letters IVXLCDM, please');
return false
}
}
mode = 'fromRoman'
}
else
mode = 'toRoman';
if (mode == 'toRoman')
f.elements[0].value = toRoman(f.elements[0].value)
else
f.elements[0].value = fromRoman(f.elements[0].value);
return false
}
function go(site)
{
if (site.selectedIndex>0)
top.location=site.options[site.selectedIndex].value
}
function foc()
{
if (navigator.userAgent.indexOf('Mozilla/3') != -1 | navigator.userAgent.indexOf('Mozilla/4') != -1)
document.forms[0].elements[0].focus()
}
//-->
</script>
```

Title | # Comments | Views | Activity |
---|---|---|---|

creating a flowchart from an algorithm | 5 | 24 | |

Code enhancement | 5 | 13 | |

Data Saving | 5 | 40 | |

reading a text file which contains double Quotes is truncading the record | 4 | 33 |

Join the community of 500,000 technology professionals and ask your questions.

Connect with top rated Experts

**16** Experts available now in Live!