相关疑难解决方法(0)

将罗马数字转换为十进制

我设法让我的代码将大多数罗马数字转换为适当的十进制值.但它不适用于某些特殊情况.示例:XCIX= 99但我的代码打印出来109.

这是我的代码.

public static int romanConvert(String roman)
{
    int decimal = 0;

    String romanNumeral = roman.toUpperCase();
    for(int x = 0;x<romanNumeral.length();x++)
    {
        char convertToDecimal = roman.charAt(x);

        switch (convertToDecimal)
        {
        case 'M':
            decimal += 1000;
            break;

        case 'D':
            decimal += 500;
            break;

        case 'C':
            decimal += 100;
            break;

        case 'L':
            decimal += 50;
            break;

        case 'X':
            decimal += 10;
            break;

        case 'V':
            decimal += 5;
            break;

        case 'I':
            decimal += 1;
            break;
        }
    }
    if (romanNumeral.contains("IV")) …
Run Code Online (Sandbox Code Playgroud)

java

39
推荐指数
4
解决办法
9万
查看次数

如何在PHP中将罗马数字转换为整数?

使用PHP,我想将包含罗马数字的字符串转换为其整数表示.我需要这个,因为我需要对它们进行计算.

关于罗马数字的维基百科

仅识别基本的罗马数字字符就足够了,例如:

$roman_values=array(
    'I' => 1,
    'V' => 5,
    'X' => 10,
    'L' => 50,
    'C' => 100,
    'D' => 500,
    'M' => 1000,
);
Run Code Online (Sandbox Code Playgroud)

这意味着最高可能的数字是3999(MMMCMXCIX).我将N用来表示零,除了只支持正整数.

我不能将PEAR库用于罗马数字.

我在SO上发现了一个很好的问题,关于如何测试字符串是否包含有效的罗马数字:

如何只使用正则表达式匹配有效的罗马数字?

编码的最佳方法是什么?

php integer roman-numerals

26
推荐指数
3
解决办法
2万
查看次数

使用语法导向的转换方案将整数转换为罗马数字?

龙书包括使用语法指导的翻译方案将整数转换为罗马数字的练习.

怎么能完成?

compiler-construction translation-scheme roman-numerals

8
推荐指数
1
解决办法
4654
查看次数

用点,字母,数字排序对象数组.我能够按数字排序,但混合值很难.不确定是否可行

我尝试了典型的排序功能,并检查项目是否为字符串.但我得到一个非常奇怪的输出.尝试了多种不同的方法.

 var arr = [{section: '12.2.a'},
               {section: '12.2.b.iii'},
               {section: '12.2.c'},
               {section: '12'},
               {section: '12A'},
               {section: '12.3.b'},
               {section: '12.3.c'},
               {section: 'Q2'},
               {section: 'Q32'},
               {section: 'Q6'},
               {section: 'Q5'}]



var arr2 = arr.sort(function(a, b) {
    var nums1 = a.section.split(".");
    var nums2 = b.section.split(".");

    for (var i = 0; i < nums1.length; i++) {
      if (nums2[i]) {
        if (nums1[i] !== nums2[i]) {
          if (isNaN(parseInt(nums1[i])) && isNaN(parseInt(nums2[i]))) {
            return nums1[i].localeCompare(nums2[i]);
          }
          return parseInt(nums1[i]) - parseInt(nums2[i]);   
        }
      } else {
        return 1;
      }
    }
    return -1; …
Run Code Online (Sandbox Code Playgroud)

javascript arrays sorting object

8
推荐指数
2
解决办法
167
查看次数

如何替换阿拉伯语等效字符串中的所有罗马数字?

我有一份所有莎士比亚十四行诗的清单,我正在制作一个搜索每个十四行诗的功能.但是,我希望能够使用阿拉伯数字搜索它们(例如"/ sonnet 122"..txt的格式如下:

I

This is a sonnet

II

This is a second sonnet
Run Code Online (Sandbox Code Playgroud)

我现在正在使用节点来尝试这样做,但是我从昨天起就一直在尝试无济于事.我昨天的最后一次尝试是使用'替换'方法:

'use strict';
//require module roman-numerals, which converts roman to arabic
var toArabic = require('roman-numerals').toArabic;
//require file-handling module
var fs = require('fs');

fs.readFile('sonn.txt', 'utf8', function (err,data) {
    if (err) {
        console.log(err);
    } else {
        var RN = /[A-Z]{2,}/g; 
        var found = data.match(RN); //finds all roman numbers and puts them in an array
        var numArr = [];
        for (var i = 0; i < found.length; i++ ){ …
Run Code Online (Sandbox Code Playgroud)

javascript

7
推荐指数
1
解决办法
398
查看次数

如何在字符串中捕捉罗马数字?

我想在字符串中捕捉罗马数字(80以下的数字足够好).我找到了很好的基础,你如何只使用正则表达式匹配有效的罗马数字?.问题是:它处理整个字符串.我还没有找到如何检测字符串内的罗马数字的解决方案,因为没有强制要求,每个组都可以是可选的.到目前为止我尝试过这样的事情:

my $x = ' some text I-LXIII iv more ';

if (  $x =~  s/\b(
                    (
                        (XC|XL|L?X{0,3}) # first group 10-90
                    |
                        (IX|IV|V?I{0,3}) # second group 1-9
                    )+
            )
        \b/>$1</xgi ) { # mark every occurrence
    say $x;
}

__END__
 ><some>< ><text>< ><>I<><-><>LXIII<>< ><>iv<>< ><more>< 
 desired output:
  some text >I<->LXIII< >iv< more 
Run Code Online (Sandbox Code Playgroud)

因此,这个也可以自己捕获字边界,因为所有组都是可选的.如何完成它?如何强制执行这两个组中的一组,而无法确定哪一组是强制性的?其他捕捉罗马人的方法也很受欢迎.

regex perl

6
推荐指数
1
解决办法
398
查看次数

插入符号(?^:...)在Perl qr //正则表达式的字符串形式中是什么意思?

考虑一下这个脚本,该脚本基于SO 267399关于解析罗马数字的答案 ,尽管解析罗马数字是这个问题的偶然问题.

#!/usr/bin/env perl
#
# Based on answer to SO 0026-7399

use warnings;
use strict;

my $qr1 = qr/(?i:M{1,3})/;
my $qr2 = qr/(?i:C[MD]|D?C{1,3})/;
my $qr3 = qr/(?i:X[CL]|L?X{1,3})/;
my $qr4 = qr/(?i:I[XV]|V?I{1,3})/;

print "1000s: $qr1\n";
print " 100s: $qr2\n";
print "  10s: $qr3\n";
print "   1s: $qr4\n";

# This $qr is too simple — it matches the empty string
#my $qr = qr/($qr1?$qr2?$qr3?$qr4?)/;

my $qr = qr/\b((?:$qr1$qr2?$qr3?$qr4?)|(?:$qr2$qr3?$qr4?)|(?:$qr3$qr4?)|(?:$qr4))\b/;

print " Full: $qr\n";

while (<>)
{
    chomp;
    print " …
Run Code Online (Sandbox Code Playgroud)

regex perl

6
推荐指数
2
解决办法
693
查看次数

如何检查字符串是否包含R中的罗马数字?

我的数据集'ad'中有一个住宅地址专栏.我想检查没有数字(包括罗马数字)的地址.我正在使用

ad$check <- grepl("[[:digit:]]",ad$address)
Run Code Online (Sandbox Code Playgroud)

标记出没有数字的地址.如何对包含罗马数字的地址执行相同操作?

例如:"X楼,DLF Building-III,ABC City"

regex r text-analysis roman-numerals

5
推荐指数
1
解决办法
406
查看次数

将包含罗马数字的字符串转换为等效的整数

我有以下字符串:

str = "MMX Lions Television Inc"
Run Code Online (Sandbox Code Playgroud)

我需要将其转换为:

conv_str = "2010 Lions Television Inc"
Run Code Online (Sandbox Code Playgroud)

我有以下函数将罗马数字转换为等价的整数:

numeral_map = zip(
    (1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1),
    ('M', 'CM', 'D', 'CD', 'C', 'XC', 'L', 'XL', 'X', 'IX', 'V', 'IV', 'I')
)

def roman_to_int(n):
    n = unicode(n).upper()

    i = result = 0
    for integer, numeral in numeral_map:
        while n[i:i + len(numeral)] == numeral:
            result += integer
            i += len(numeral)
    return result
Run Code Online (Sandbox Code Playgroud)

我将如何使用re.sub这里获取正确的字符串?

(注意:我尝试使用regex此处描述的内容: …

python regex

3
推荐指数
1
解决办法
4880
查看次数

从Python中的字符串中提取罗马数字

我有一个字符串列表,其中包含表示为拉丁数字的和弦,如下所示:

['ii7', 'vi7', 'V', 'IVadd9', 'Iadd9', 'V', 'IVmaj7', 'ii7', 'vi7', 'V', 'IVadd9', 'Iadd9', 'V', 'IVmaj7']
Run Code Online (Sandbox Code Playgroud)

我想将这些字符串分成 3 个子列表,如下所示:

numerals = ['ii', 'vi', 'V', 'IV', 'I', 'V', 'IV', 'ii', 'vi', 'V', 'IV', 'I', 'V', 'IV']
chord_type=['min', 'min', 'maj', 'maj', 'maj', 'maj','maj', 'min', 'min', 'maj', 'maj', 'maj', 'maj','maj']
extentions=['7','7','', 'add9','add9','','7','7','7','','add9','add9','','7']
Run Code Online (Sandbox Code Playgroud)

(如您所见,大写字母的罗马数字对应和弦类型中的“maj”,非大写字母的罗马数字对应“min”。)

在我的例子中所有可能的罗马数字:

i, ii, iii, iv, v, vi, vii, I, II, III, IV, V, VI, VII
Run Code Online (Sandbox Code Playgroud)

请注意,我们不需要M, C, L, X

我知道我可以从 Python 中的字符串中的字母中提取或拆分数字,如此处所述但如何提取罗马数字?

我考虑过使用匹配 …

python string split roman-numerals

3
推荐指数
1
解决办法
1611
查看次数