■前提条件
jsで実装する。
■要件
大文字or小文字のローマ数字を、全角アラビア数字に変換したい。
ただし、文章中の一部に含まれているものも変換対象とする。
(例)てすとタワーⅡhoge
■課題
ライブラリを使用して変換しようとしたが、先頭文字が変換対象となるためエラーになってしまう。
→使用予定のライブラリ:https://www.npmjs.com/package/numeric-quantity
■解決策
ライブラリを使用せず、自力で実装。
今回の設計では10までの値を変換対象としているが、50(Ⅼ)、100(Ⅽ)なども対象とする場合は追記が必要。
■コード
/**
* 全角or半角ローマ数字を全角アラビア数字に変換
*/
const romanToArabic = (str) => {
const romanMap = {
Ⅰ: "1",
Ⅱ: "2",
Ⅲ: "3",
Ⅳ: "4",
Ⅴ: "5",
Ⅵ: "6",
Ⅶ: "7",
Ⅷ: "8",
Ⅸ: "9",
Ⅹ: "10",
ⅰ: "1",
ⅱ: "2",
ⅲ: "3",
ⅳ: "4",
ⅴ: "5",
ⅵ: "6",
ⅶ: "7",
ⅷ: "8",
ⅸ: "9",
ⅹ: "10",
};
return str.replace(
/Ⅰ|Ⅱ|Ⅲ|Ⅳ|Ⅴ|Ⅵ|Ⅶ|Ⅷ|Ⅸ|Ⅹ|ⅰ|ⅱ|ⅲ|ⅳ|ⅴ|ⅵ|ⅶ|ⅷ|ⅸ|ⅹ/g,
(match) => romanMap[match]
);
};
■備考
自分のライブラリの使い方が誤りの可能性を捨てきれないため、再度ライブラリを使用しての実装を試みる。
また、他のライブラリを使用できないかも検討する。