0
0

JSで大文字or小文字のローマ数字を全角アラビア数字に変換した

Last updated at Posted at 2024-07-12

■前提条件
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]
  );
};

■備考
自分のライブラリの使い方が誤りの可能性を捨てきれないため、再度ライブラリを使用しての実装を試みる。
また、他のライブラリを使用できないかも検討する。

0
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0