うちのような小さな会社が、受託案件を長年やっているといろんな言語の保守メンテをやる必要があるのですが
文字列操作、この言語でなだっけ?とよく忘れてしまいます...
よく使うものを中心に文字列操作をまとめていきます。
完全に個人的な忘備録です。
主にVBAを中心に Java, C#, PHP, Python, JavaScriptについて書いていきます
文字数の長さを取得する
文字列から指定文字数の文字を取得する(トリミング)
文字列から左側の指定文字数の文字を取得する
文字列から右側の指定文字数の文字を取得する
文字列から指定文字を検索する
文字列の後ろから指定文字を検索する
文字列を置換する
アルファベットの小文字を大文字に変換する
アルファベットの大文字を小文字に変換する
両端のスペースを削除する
左側のスペースを削除する
右側のスペースを削除する
文字列を数値に変換する
文字列を日付に変換する
数値を文字列に変換する
日付を文字列に変換する
文字数の長さを取得する
VBA (Len)
s = "Hello"
i = Len(s)
Debug.Print i
' 結果 5
Java (.length())
s = "ABCDE FGHIJ";
i = s.length();
System.out.print(i);
// 結果 11
C# (.Length)
s = "ABCDE FGHIJ";
i = s.Length;
Console.WriteLine(i);
// 結果 11
PHP (mb_strlen)
$s = "ABCDE FGHIJ";
$i = mb_strlen($s);
print_r($i);
// 結果 11
Python (len)
s = "ABCDE FGHIJ"
i = len(s)
print(i)
// 結果 11
JavaScript (.length())
s = "ABCDE FGHIJ"
i = s.length();
console.log(i)
// 結果 11
文字列から指定文字数の文字を取得する(トリミング)
VBA (Mid)※開始は1, 文字数指定
s = "ABCDE FGHIJ"
x = Mid(s, 3)
Debug.Print x
' 結果 "CDE FGHIJ"
x = Mid(s, 3, 7)
Debug.Print x
' 結果 "CDE FGH"
Java (substring)※開始は0, 文字位置指定
s = "ABCDE FGHIJ";
x = s.substring(3);
System.out.print(x);
// 結果 "DE FGHIJ"
x = s.substring(3, 7);
System.out.print(x);
// 結果 "DE F"
C#(Substring)※開始は0, 文字数指定
s = "ABCDE FGHIJ";
x = s.Substring(3);
Console.WriteLine(x);
// 結果 "DE FGHIJ"
x = s.Substring(3, 4);
Console.WriteLine(x);
// 結果 "DE F"
PHP(mb_substr)※開始は0, 文字数指定
$s = "ABCDE FGHIJ";
$x = mb_substr($s, 3);
print_r($x);
// 結果 "DE FGHI"
$x = mb_substr($s, 3, 7);
print_r($x);
// 結果 "DE FGHI"
Python([:])※開始は0, 文字位置指定
s = "ABCDE FGHIJ"
x = s[3:]
print(x)
// 結果 "DE FGHIJ"
x = s[3:]
print(x)
// 結果 "DE F"
JavaScript (.substring())※開始は0, 文字位置指定
s = "ABCDE FGHIJ";
x = s.substring(3);
console.log(x);
// 結果 "DE FGHIJ"
x = s.substring(3, 7);
console.log(x);
// 結果 "DE F"
文字列から左側の指定文字数の文字を取得する
VBA (Left)※開始は1, 文字数指定
s = "ABCDE FGHIJ"
x = Left(s, 3)
Debug.Print x
' 結果 "ABC"
Java (substring)※開始は0, 文字位置指定
s = "ABCDE FGHIJ";
x = s.substring(0, 3);
System.out.print(x);
// 結果 "ABC"
C#(Substring)※開始は0, 文字数指定
s = "ABCDE FGHIJ";
x = s.Substring(0, 3);
Console.WriteLine(x);
// 結果 "ABC"
PHP(mb_substr)※開始は0, 文字数指定
$s = "ABCDE FGHIJ";
$x = mb_substr($s, 0, 3);
print_r($x);
// 結果 "ABC"
Python([:])※開始は0, 文字位置指定
s = "ABCDE FGHIJ"
x = s[3:]
print(x)
// 結果 "HIJ"
JavaScript (.substring())※開始は0, 文字位置指定
s = "ABCDE FGHIJ";
x = s.substring(0, 3);
console.log(x);
// 結果 "ABC"
文字列から右側の指定文字数の文字を取得する
VBA (Right)※開始は1, 文字数指定
s = "ABCDE FGHIJ"
x = Right(s, 3)
Debug.Print x
' 結果 "HIJ"
Java (substring)※.length()と組み合わせて開始位置を計算
s = "ABCDE FGHIJ";
x = s.substring(s.length() - 3);
System.out.print(x);
// 結果 "HIJ"
C#(Substring)※開始は0, 文字数指定
s = "ABCDE FGHIJ";
x = s.substring(s.Length - 3);
Console.WriteLine(x);
// 結果 "HIJ"
PHP(mb_substr)※開始は0, マイナスの文字数指定
$s = "ABCDE FGHIJ";
$x = mb_substr($s, -3);
print_r($x);
// 結果 "HIJ"
Python([:])※開始は0, マイナスの文字数指定
s = "ABCDE FGHIJ"
x = s[-3:]
print(x)
// 結果 "HIJ"
JavaScript (.substring())※開始は0, 文字位置指定
s = "ABCDE FGHIJ";
x = s.substring(s.length() - 3);
console.log(x);
// 結果 "HIJ"
文字列から指定文字を検索する
VBA (InStr)※開始は1, 文字数指定
s = "ABCDE FGHIJ"
i = InStr(s, "DE")
Debug.Print i
' 結果 4
Java (.indexOf)※開始は0
s = "ABCDE FGHIJ";
i = s.indexOf("DE");
System.out.print(i);
// 結果 3
C#(.IndexOf)※開始は0
s = "ABCDE FGHIJ";
i = s.IndexOf("DE");
Console.WriteLine(i);
// 結果 3
PHP(mb_strpos)※開始は0
$s = "ABCDE FGHIJ";
$i = mb_strpos($s, "DE");
print_r($i);
// 結果 3
Python(find)※開始は0
s = "ABCDE FGHIJ"
i = s.find("DE")
print(i)
// 結果 3
JavaScript (.lastIndexOf())※開始は0
s = "ABCDE FGHIJ";
i = s.lastIndexOf("DE");
console.log(i);
// 結果 4
文字列の後ろから指定文字を検索する
VBA (InStr)※開始は1
s = "ABCDE FGHIJDE"
i = InStr(s, "DE")
Debug.Print i
' 結果 12
Java (.lastIndexOf)※開始は0
s = "ABCDE FGHIJDE";
i = s.lastIndexOf("DE");
System.out.print(i);
// 結果 11
C#(.LastIndexOf )※開始は0
s = "ABCDE FGHIJDE";
i = s.LastIndexOf ("DE");
Console.WriteLine(i);
// 結果 11
PHP(mb_strrpos)※開始は0
$s = "ABCDE FGHIJDE";
$i = mb_strrpos($s, "DE");
print_r($i);
// 結果 11
Python(rfind)※開始は0
s = "ABCDE FGHIJDE"
i = s.rfind("DE")
print(i)
// 結果 11
JavaScript (.lastIndexOf())※開始は0, 文字位置指定
s = "ABCDE FGHIJDE";
i = s.lastIndexOf("DE");
console.log(i);
// 結果 11
文字列を置換する
VBA (Replace)
s = "ABCDE FGHIJ"
x = Replace(s, "DE", "YZ")
Debug.Print x
' 結果 "ABCYZ FGHIJ"
Java (replace)
s = "ABCDE FGHIJ";
x = s.replace("DE", "YZ");
System.out.print(x);
// 結果 "ABCYZ FGHIJ"
C#(Replace)
$s = "ABCDE FGHIJ";
$x = $s.Replace("DE", "YZ");
Console.WriteLine($x);
// 結果 "ABCYZ FGHIJ"
PHP(str_replace)
$s = "ABCDE FGHIJ";
$x = str_replace("DE", "YZ", $s);
print_r($x);
// 結果 "ABCYZ FGHIJ"
Python(replace)
s = "ABCDE FGHIJ"
x = s.replace("DE", "YZ")
print(x)
// 結果 "ABCYZ FGHIJ"
JavaScript (.replace())※開始は0, 文字位置指定
s = "ABCDE FGHIJ";
x = s.replace("DE", "YZ");
console.log(x);
// 結果 "ABCYZ FGHIJ"
アルファベットの小文字を大文字に変換する
VBA (UCase)
s = "abcde fghij"
x = UCase(s)
Debug.Print x
' 結果 "ABCDE FGHIJ"
Java (toUpperCase)※全角文字もいける
s = "abcde fghij";
x = s.toUpperCase();
System.out.print(x);
// 結果 "ABCDE FGHIJ"
C#(ToUpper)
s = "abcde fghij";
x = s.ToUpper();
Console.WriteLine(x);
// 結果 "ABCDE FGHIJ"
PHP(mb_strtoupper)
$s = "abcde fghij";
$x = mb_strtoupper($s);
print_r($x);
// 結果 "ABCDE FGHIJ"
Python(upper)
s = "abcde fghij"
x = s.upper()
print(x)
// 結果 "ABCDE FGHIJ"
JavaScript (.toLowerCase())
s = "abcde fghij";
x = s.toUpperCase();
console.log(x);
// 結果 "ABCDE FGHIJ"
アルファベットの大文字を小文字に変換する
VBA (LCase)
s = "ABCDE FGHIJ"
x = LCase(s)
Debug.Print x
' 結果 "abcde fghij"
Java (toLowerCase)※全角文字もいける
s = "ABCDE FGHIJ";
x = s.toLowerCase();
System.out.print(x);
// 結果 "abcde fghij"
C#(ToLower)
s = "ABCDE FGHIJ";
x = s.ToLower();
Console.WriteLine(x);
// 結果 "abcde fghij"
PHP(mb_strtolower)
$s = "ABCDE FGHIJ";
$x = mb_strtolower($s);
print_r($x);
// 結果 "abcde fghij"
Python(lower)
s = "ABCDE FGHIJ"
x = s.lower()
print(x)
// 結果 "abcde fghij"
JavaScript (.toLowerCase())
s = "ABCDE FGHIJ";
x = s.toLowerCase();
console.log(x);
// 結果 "abcde fghij"
両端のスペースを削除する
VBA (Trim)
s = " ABCDE FGHIJ "
x = Trim(s)
Debug.Print x
' 結果 "ABCDE FGHIJ"
Java (trim)
s = " ABCDE FGHIJ ";
x = s.trim();
System.out.print(x);
// 結果 "ABCDE FGHIJ"
C#(Trim)
s = " ABCDE FGHIJ ";
x = s.Trim();
Console.WriteLine(x);
// 結果 "ABCDE FGHIJ"
PHP(trim)
$s = " ABCDE FGHIJ ";
$x = trim($s);
print_r($x);
// 結果 "ABCDE FGHIJ"
Python(strip)
s = " ABCDE FGHIJ "
x = s.strip()
print(x)
// 結果 "ABCDE FGHIJ"
JavaScript (.trim())
s = " ABCDE FGHIJ ";
x = s.trim();
console.log(x);
// 結果 "ABCDE FGHIJ"
左側のスペースを削除する
VBA (LTrim )
s = " ABCDE FGHIJ "
x = LTrim (s)
Debug.Print x
' 結果 "ABCDE FGHIJ "
Java (replaceAll)※正規表現を利用するのでちょい面倒
s = " ABCDE FGHIJ ";
x = s.replaceAll("^\\s+", "");
System.out.print(x);
// 結果 "ABCDE FGHIJ "
C#(TrimStart)
s = " ABCDE FGHIJ ";
x = s.TrimStart(s);
Console.WriteLine(x);
// 結果 "ABCDE FGHIJ "
PHP(ltrim)
$s = " ABCDE FGHIJ ";
$x = ltrim($s);
print_r($x);
// 結果 "ABCDE FGHIJ "
Python(lstrip)
s = " ABCDE FGHIJ "
x = s.lstrip()
print(x)
// 結果 "ABCDE FGHIJ "
JavaScript (.trimStart())※開始は0, 文字位置指定
s = " ABCDE FGHIJ ";
x = s.trimStart();
console.log(x);
// 結果 "ABCDE FGHIJ "
右側のスペースを削除する
VBA (RTrim)
s = " ABCDE FGHIJ "
x = RTrim (s)
Debug.Print x
' 結果 " ABCDE FGHIJ"
Java (toLowerCase)
s = " ABCDE FGHIJ ";
x = s.replaceAll("\\s+$", "");
System.out.print(x);
// 結果 " ABCDE FGHIJ"
C#(TrimEnd)
s = " ABCDE FGHIJ ";
x = s.TrimEnd();
Console.WriteLine(x);
// 結果 " ABCDE FGHIJ"
PHP(rtrim)
$s = " ABCDE FGHIJ ";
$x = rtrim($s);
print_r($x);
// 結果 " ABCDE FGHIJ"
Python(rstrip)
s = " ABCDE FGHIJ "
x = s.rstrip()
print(x)
// 結果 " ABCDE FGHIJ"
JavaScript (.trimEnd())※開始は0, 文字位置指定
s = " ABCDE FGHIJ ";
x = s.trimEnd();
console.log(x);
// 結果 " ABCDE FGHIJ"
文字列を数値に変換する
VBA (CInt)
s = "01001"
i = CInt(s)
Debug.Print i
' 結果 1001
Java (Integer.parseInt)
s = "01001";
i = Integer.parseInt(s)
System.out.print(i);
// 結果 1001
C# (Int32.Parse)
s = "01001";
i = Int32.Parse(s);
Console.WriteLine(i);
// 結果 1001
PHP (int)
$s = "01001";
$i = (int)$s;
print_r($i);
// 結果 1001
Python (int)
s = "01001"
i = (int)s
print(i)
// 結果 1001
JavaScript (Number)
s = "01001"
i = Number(s);
console.log(i)
// 結果 1001
文字列を日付に変換する
VBA (CDate)
s = "2015/07/07"
d = CDate(s)
Debug.Print d
' 結果 2015/07/07
Java (SimpleDateFormat)
s = "2015/07/07";
DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd");
Date d = dateFormat.parse(s);
System.out.print(d);
// 結果 2015/07/07
C# (DateTime.ParseExact)
s = "2015/07/07";
DateTime d = DateTime.ParseExact(s, "yyyy/MM/dd", null);
Console.WriteLine(d.ToString());
// 結果 2015/07/07 0:00:00
PHP (strtotime)
$s = "2015/07/07";
$d = strtotime($s);
print_r($d);
// 結果 2015/07/07
Python (datetime)
s = "2015/07/07"
d = datetime.datetime.strptime(s, "yyyy/MM/dd")
print(d)
// 結果 2015/07/07
JavaScript (Date)
s = "2015/07/07"
d = new Date(s);
console.log(d)
// 結果 2015/07/07
数値を文字列に変換する
VBA (Str)
i = 100
s = Str(i)
Debug.Print s
' 結果 "100"
Java (String.valueOf)
i = 100
s = String.valueOf(i);
System.out.print(s);
// 結果 "100"
C# (.ToString)
i = 100
s = i.ToString();
Console.WriteLine(s);
// 結果 "100"
PHP (string)
$i = 100;
$s = (string)$i;
print_r($s);
// 結果 "100"
Python (str)
i = 100
s = str(i)
print(s)
// 結果 "100"
JavaScript (Number)
i = 100
i = Number(s);
console.log(i)
// 結果 "100"
日付を文字列に変換する
VBA (Format)
d = CDate("2015/07/07")
s = Format(d, "yyyy/mm/dd")
Debug.Print s
' 結果 "2015/07/07"
Java (SimpleDateFormat)
Date d= new Date();
DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd");
s= dateFormat.format(d);
System.out.print(s);
// 結果 "2015/07/07"
C# (.ToString)
DateTime d = new DateTime(2015, 7, 7);
s = dt.ToString("yyyy/MM/dd")
Console.WriteLine(s);
// 結果 "2015/07/07"
PHP (date)
$d = strtotime("2015/07/07");
$s = date("Y/m/d", $d)
print_r($s);
// 結果 "2015/07/07"
Python (strftime)
d = datetime.datetime.now()
s= d.strftime('%Y/%m/%d')
print(s)
// 結果 "2015/07/07"
JavaScript (Date)※面倒でした
d = new Date("2015/07/07");
s = d.getFullYear() + "/" + (d.getMonth() + 1) + "/" + d.getDate();
console.log(s)
// 結果 "2015/7/7"