アプリ版:「スタンプのみでお礼する」機能のリリースについて

以下の2例のうち、数値部分を4桁としたいと思います。
9桁の英数/3桁の英+4桁の数値/3桁の英+4桁の数値
としたいです。
以下に変換例を示します。
190302007/WGi6301/WGn60→190302007/WGi6301/WGn0060
180302002/WGn60/WGn80→180302002/WGn0060/WGn0080

よろしくお願いします。

質問者からの補足コメント

  • お世話になります。
    ①は数字または英数字のみとします。
    ②③については先頭の3桁は英字とします。残りの4桁は数字のみとします。


    ^_^

    No.1の回答に寄せられた補足コメントです。 補足日時:2022/01/23 17:44
  • >①で数字または英数字が8桁未満、又は10桁以上あった場合は、どうしますか。(9桁でない場合)

    何もしなくても大丈夫です。

    >②③について、数字の部分が0桁、又は5桁以上の場合は、どうしますか。

    必ず数字は1桁以上4桁以下となります。
    それ以外は無視してください。

    No.2の回答に寄せられた補足コメントです。 補足日時:2022/01/23 18:57
  • HAPPY

    ご回答ありがとうございます。
    可能でしたら、Excelのセル式にて回答いただけましたら幸いです。

    No.3の回答に寄せられた補足コメントです。 補足日時:2022/01/23 20:36

A 回答 (4件)

>可能でしたら、Excelのセル式にて回答いただけましたら幸いです。



Perlのカテゴリでの質問でしたので、Perlで回答したのですが、Excelだったのですね。
申し訳ありませんが、私は、Excelについては詳しくありませんで回答できません。
一旦、この質問を閉じて、改めてExcelのカテゴリで再度、同じ質問をされてはいかがでしょうか。そうすれば良い回答が得られるかと思います。
    • good
    • 0

以下、$strに変更前の文字を設定したサンプルです。


$ostrが変換結果です。
$strをいろいろ変えて確認してください。


my $str = '180302002/WGn60/WGn80';
if ( $str =~ m/^([A-Z0-9]{9}\/[A-Z]{3})(\d{1,4})(\/[A-Z]{3})(\d{1,4})$/i ){
my $num1 = '0' x (4-length($2)) . $2;
my $num2 = '0' x (4-length($4)) . $4;
my $ostr = $1 . $num1 . $3 . $num2;
print("<$str>\n");
print("<$ostr>\n");
}
この回答への補足あり
    • good
    • 1

>①は数字または英数字のみとします。


>②③については先頭の3桁は英字とします。残りの4桁は数字のみとします。

①で数字または英数字が8桁未満、又は10桁以上あった場合は、どうしますか。(9桁でない場合)
②③について、数字の部分が0桁、又は5桁以上の場合は、どうしますか。

という意味で、質問しました。
このような場合、エラーとして、なにも変換しませんが、よろしいでしょうか。
この回答への補足あり
    • good
    • 0

①    ②         ③


9桁の英数/3桁の英+4桁の数値/3桁の英+4桁の数値
ということですが、
①が9桁の英数でない場合はどうしますか。
②が③桁の英字で開始していない場合、どうしますか。
②が③桁の英字+5桁以上の数字の場合、どうしますか。
②が③桁の英字のみの場合、どうしますか。(数字が0桁)
③についても②と同様です。
この回答への補足あり
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!