我会为我的工作写函数 . 这是PowerShell中的两个罗马数字函数 .

function ConvertFrom-RomanNumeral

{

.SYNOPSIS

Converts a Roman numeral to a number.

.DESCRIPTION

Converts a Roman numeral - in the range of I..MMMCMXCIX - to a number.

.EXAMPLE

ConvertFrom-RomanNumeral -Numeral MMXIV

.EXAMPLE

"MMXIV" | ConvertFrom-RomanNumeral

#>

[CmdletBinding()]

[OutputType([int])]

Param

(

[Parameter(Mandatory=$true,

HelpMessage="Enter a roman numeral in the range I..MMMCMXCIX",

ValueFromPipeline=$true,

Position=0)]

[ValidatePattern("^M{0,3}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})$")]

[string]

$Numeral

)

Begin

{

$RomanToDecimal = [ordered]@{

M = 1000

CM = 900

D = 500

CD = 400

C = 100

XC = 90

L = 50

X = 10

IX = 9

V = 5

IV = 4

I = 1

}

}

Process

{

$roman = $Numeral + " "

$value = 0

do

{

foreach ($key in $RomanToDecimal.Keys)

{

if ($key.Length -eq 1)

{

if ($key -match $roman.Substring(0,1))

{

$value += $RomanToDecimal.$key

$roman = $roman.Substring(1)

break

}

}

else

{

if ($key -match $roman.Substring(0,2))

{

$value += $RomanToDecimal.$key

$roman = $roman.Substring(2)

break

}

}

}

}

until ($roman -eq " ")

$value

}

End

{

}

}

function ConvertTo-RomanNumeral

{

.SYNOPSIS

Converts a number to a Roman numeral.

.DESCRIPTION

Converts a number - in the range of 1 to 3,999 - to a Roman numeral.

.EXAMPLE

ConvertTo-RomanNumeral -Number (Get-Date).Year

.EXAMPLE

(Get-Date).Year | ConvertTo-RomanNumeral

#>

[CmdletBinding()]

[OutputType([string])]

Param

(

[Parameter(Mandatory=$true,

HelpMessage="Enter an integer in the range 1 to 3,999",

ValueFromPipeline=$true,

Position=0)]

[ValidateRange(1,3999)]

[int]

$Number

)

Begin

{

$DecimalToRoman = @{

Ones = "","I","II","III","IV","V","VI","VII","VIII","IX";

Tens = "","X","XX","XXX","XL","L","LX","LXX","LXXX","XC";

Hundreds = "","C","CC","CCC","CD","D","DC","DCC","DCCC","CM";

Thousands = "","M","MM","MMM"

}

$column = @{Thousands = 0; Hundreds = 1; Tens = 2; Ones = 3}

}

Process

{

[int[]]$digits = $Number.ToString().PadLeft(4,"0").ToCharArray() |

ForEach-Object { [Char]::GetNumericValue($_) }

$RomanNumeral = ""

$RomanNumeral += $DecimalToRoman.Thousands[$digits[$column.Thousands]]

$RomanNumeral += $DecimalToRoman.Hundreds[$digits[$column.Hundreds]]

$RomanNumeral += $DecimalToRoman.Tens[$digits[$column.Tens]]

$RomanNumeral += $DecimalToRoman.Ones[$digits[$column.Ones]]

$RomanNumeral

}

End

{

}

}

java 判断是否是罗马_如何只使用正则表达式匹配有效的罗马数字?相关推荐

  1. java 判断视频是否损坏_内容研究(或如何判断您的内容是否损坏)

    java 判断视频是否损坏 您的内容效果如何? (How well is your content working?) In the age of data-worship, most site ow ...

  2. java判断括号是否闭合_用 java 判断 括号是否完全匹配

    用 java 判断 括号是否完全匹配: package emp; import java.util.Stack; public class Parentheses { public static vo ...

  3. java判断是否第一次出现_利用java判断字符首次出现的位置,java替换最后一个特定字符...

    利用java判断字符首次出现的位置利用爪哇判断字符首次出现的位置, 目的: (学习视频分享:java视频教程 实现代码如下: 导入Java.util.收藏品: 导入Java.util.LinkedLi ...

  4. java 判断手机运营商_如何用java判断手机号运营商?

    如何用java实现判断手机号的运营商?因为每个号段都是工信部规定划分给指定运营商的,所以我们可以通过手机号码的号段来判断. 现在手机号的号段那么多,要怎样方便的的判断呢?于是我们就想到了正则表达式,在 ...

  5. JAVA 判断简单密码算法_十道简单算法题二【Java实现】

    前言 清明不小心就拖了两天没更了-- 这是十道算法题的第二篇了-上一篇回顾:十道简单算法题 最近在回顾以前使用C写过的数据结构和算法的东西,发现自己的算法和数据结构是真的薄弱,现在用Java改写一下, ...

  6. java 判断非ascii字符_文件名中的JavaMail和非ASCII字符

    我可以在 JavaMail中发送具有非ascii文件名的附件,但我无法下载它们.我特意为那些文件名包含非ascii字符的附件获取java.io.FileNotFoundException. 仅供参考: ...

  7. java 判断二叉树是否平衡_剑指Offer - 判断二叉树是否是平衡二叉树

    平衡二叉树的条件:为空或者子树高度之差的绝对值小于等于1,且子树也是平衡二叉树 最直接的做法,遍历每个结点,借助一个获取树深度的递归函数,根据该结点的左右子树高度差判断是否平衡,然后递归地对左右子树进 ...

  8. java 判断日期是同一天_如何检查Java中的两个日期是否在同一天

    虽然根据java.util.Date的日期组件部分给出的答案在很多部分都是足够的,但我要强调的是,java.util.Date不是日期,而是一种以毫秒为单位测量的UNIX时间戳.那是什么后果? 日期时 ...

  9. java判断括号是否闭合_【python每日一练】有效括号

    给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效. 有效字符串需满足: 左括号必须用相同类型的右括号闭合. 左括号必须以正确的顺序闭合. 注意空字符串可被认 ...

最新文章

  1. 好记性不如烂笔杆-android学习笔记十四 EditText 画行,解决光标压线问题
  2. Android中measure过程、WRAP_CONTENT详解以及xml布局文件解析流程浅析(上)
  3. php会员权限分析,PHP会员权限控制-很详细(转)
  4. 一个不成功人士的“成功之道”
  5. 使用SignalR从服务端主动推送警报日志到各种终端(桌面、移动、网页)
  6. php的具体配置学习笔记
  7. android获取wifi mac地址吗,Android获取当前WiFi的MAC地址-适配所有版本
  8. C++直接修改std::set元素的方法
  9. setupUi()引起的麻烦
  10. Windows传统取证的一些笔记
  11. python简明教程_04
  12. 一句口诀记住 OSI七层协议模型
  13. C语言输出大写金额,编程实现,输入一个人民币小写金额值,转化为大写金额值输出。先实现基本功能...
  14. 基于微信小程序的在线考试系统【毕业设计源码】
  15. P5339 [TJOI2019]唱、跳、rap和篮球
  16. 网络传输中的那些编码之-chr和hex(base16)
  17. ubuntu 安装jdk 1.8
  18. 青龙面板 JDC2.0.0扫码获取cookie教程
  19. UBUNTU 18.04 GPU + miniconda3 + pytorch + yolo v5 安装测试
  20. 用于信号处理的Xilinx FPGA XC7K325T PCIeX8 FMC处理板卡

热门文章

  1. MongoDB——ISODate日期类型
  2. 触摸!天空龙 - 锻炼极速反应力
  3. Dev-C++下面的编译状态栏信息不显示
  4. sql语句重点基础:查询语句
  5. html中波浪线线怎么设置,如何在PPT中加波浪线?
  6. 使用Hystrix实现自动降级与依赖隔离
  7. 统计词频并输出高频词汇
  8. python 多态app_**python多态
  9. java使用cmd编译中文时错误,解决Notepad++编写的Java程序在cmd窗口编译时中文注释报错问题...
  10. sshd:root@notty: linux 被暴力登录处理