平成の最後に色々なプログラミング言語で平成から令和に置換してみる
はじめに
もうすぐで平成も終わり、新しい時代「令和」が始まります。
そんな中、和暦を表示しているようなプログラムで平成から令和に変更する対応が間に合わないといった話題も出ています。
幸運なことに、私の仕事においてはそのような対応は不要でしたので、特に大変な思いはしていません。
それじゃあつまらない!ということで、色々なプログラミング言語で平成から令和に置換してみることにしました。(唐突)
replace 平成 with 令和
以下のような文章を、
年号は平成です
令和に対応させるために、文字列置換します
年号は令和です
基本的に、年号は平成です
という文字列を message
などの変数として持ち、 平成
という文字列を 令和
に置換し、結果を標準出力する、という流れになっています。
以降のコードはpaiza.IOにて動くことを確認していますが、その言語において一般的な記述であるかは保証できません。
Bash
GNU bash 4.4.19
MESSAGE="年号は平成です" MESSAGE=`echo $MESSAGE | sed s/平成/令和/` echo $MESSAGE
C#
mono-4.6.2 (C#6, CLI4.5)
public class Heisei2Reiwa{ public static void Main(){ string message = "年号は平成です"; message = message.Replace("平成", "令和"); System.Console.WriteLine(message); } }
C++
clang 6.0 / LLVM 6.0 / libc++ (C++17)
#include <iostream> using namespace std; int main(void){ std::string message = "年号は平成です"; std::string heisei = "平成"; std::string reiwa = "令和"; message.replace(message.find(heisei), heisei.length(), reiwa); std::cout << message << std::endl; }
D
LLVM D compiler 1.12.0
import std.stdio; import std.string; void main(){ string message = "年号は平成です"; message = replace(message, "平成", "令和"); writeln(message); }
Elixir
Elixir 1.5.3
message = "年号は平成です" message = String.replace message, "平成", "令和" IO.puts message
Go
go 1.11.1
package main import ( "fmt" "strings" ) func main(){ message := "年号は平成です" message = strings.Replace(message, "平成", "令和", 1) fmt.Println(message) }
Java
openjdk 11.0.1
import java.util.*; public class Main { public static void main(String[] args) throws Exception { String message = "年号は平成です"; message = message.replace("平成", "令和"); System.out.println(message); } }
JavaScript
node v10.13.0
let message = '年号は平成です'; message = message.replace('平成', '令和'); console.log(message);
Kotlin
Kotlin 1.3.0
fun main(args: Array<String>) { var message = "年号は平成です" message = message.replace("平成", "令和") println(message) }
MySQL
MySQL 5.7.24
set @message = '年号は平成です'; select replace(@message, '平成', '令和') from dual;
Perl
perl 5.26.1
$message = "年号は平成です"; $message =~ s/平成/令和/; printf $message;
PHP
php 7.2.12
<?php $message = '年号は平成です'; $message = str_replace('平成', '令和', $message); print($message);
Python3
python 3.6.6
message = "年号は平成です" message = message.replace("平成", "令和") print(message)
R
R 3.4.4
message <- "年号は平成です" message <- sub("平成", "令和", message) cat(message)
Ruby
ruby 2.5.3
message = '年号は平成です' message.sub!('平成', '令和') puts message
Rust
Rust 1.28.0
fn main(){ let message = "年号は平成です"; let message = message.replace("平成", "令和"); println!("{}", message); }
Scala
Scala 2.12.7
object Main extends App{ var message = "年号は平成です" message = message.replace("平成", "令和") println(message) }
Swift
Swift version 4.2
import Foundation var message = "年号は平成です" message = message.replacingOccurrences(of: "平成", with: "令和") print(message)
VB
VB.net 0.0.0.5943 / mono-4.6.2
public class Heisei2Reiwa shared function Main as integer Dim message = "年号は平成です" message = message.Replace("平成", "令和") Console.WriteLine(message) return 0 End function end class
おわりに
以上なんですけどね...
感想としては、 replace
などの関数(メソッド)が標準的に用意されていればとても簡単ですが、用意されていないと文字列操作をすることになり面倒だなということです。
プログラミング言語の開発者様に感謝です。
また、環境を整えなくてもコードを実行できるオンライン実行環境は大変ありがたい存在だなと感じました。
paiza.IOは主要な言語があり、バージョンも新しめで、簡単に使えるので、とても良かったです。
(関係者では全くありません)
本当はもっとたくさんの言語についてやりたかったのですが、難しいですね。