いろんな言語での文字列操作の比較（VBA, Java, C#, PHP, Python, JavaScript）

うちのような小さな会社が、受託案件を長年やっているといろんな言語の保守メンテをやる必要があるのですが
文字列操作、この言語でなだっけ？とよく忘れてしまいます...
よく使うものを中心に文字列操作をまとめていきます。
完全に個人的な忘備録です。

主にVBAを中心に Java, C#, PHP, Python, JavaScriptについて書いていきます

[文字数の長さを取得する](#文字数の長さを取得する)
[文字列から指定文字数の文字を取得する（トリミング）](#文字列から指定文字数の文字を取得する（トリミング）)
[文字列から左側の指定文字数の文字を取得する](#文字列から左側の指定文字数の文字を取得する)
[文字列から右側の指定文字数の文字を取得する](#文字列から右側の指定文字数の文字を取得する)
[文字列から指定文字を検索する](#文字列から指定文字を検索する)
[文字列の後ろから指定文字を検索する](#文字列の後ろから指定文字を検索する)
[文字列を置換する](#文字列を置換する)
[アルファベットの小文字を大文字に変換する](#アルファベットの小文字を大文字に変換する)
[アルファベットの大文字を小文字に変換する](#アルファベットの大文字を小文字に変換する)
[両端のスペースを削除する](#両端のスペースを削除する)
[左側のスペースを削除する](#左側のスペースを削除する)
[右側のスペースを削除する](#右側のスペースを削除する)
[文字列を数値に変換する](#文字列を数値に変換する)
[文字列を日付に変換する](#文字列を日付に変換する)
[数値を文字列に変換する](#数値を文字列に変換する)
[日付を文字列に変換する](#日付を文字列に変換する)

# 文字数の長さを取得する

#### VBA （Len）
```Visual Basic
s = "Hello"
i = Len(s)
Debug.Print i
' 結果 5
```


#### Java （.length()）
```Java
s = "ABCDE FGHIJ";
i = s.length();
System.out.print(i);
// 結果 11
```

#### C# （.Length）
```c#
s = "ABCDE FGHIJ";
i = s.Length;
Console.WriteLine(i);
// 結果 11
```

#### PHP （mb_strlen）
```php
$s = "ABCDE FGHIJ";
$i = mb_strlen($s);
print_r($i);
// 結果 11
```

#### Python （len）
```python
s = "ABCDE FGHIJ"
i = len(s)
print(i)
// 結果 11
```

#### JavaScript （.length()）
```javascript
s = "ABCDE FGHIJ"
i = s.length();
console.log(i)
// 結果 11
```

# 文字列から指定文字数の文字を取得する（トリミング）

#### VBA （Mid）※開始は1, 文字数指定
```Visual Basic
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, 文字位置指定
```Java
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, 文字数指定
```c#
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, 文字数指定
```php
$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, 文字位置指定
```python
s = "ABCDE FGHIJ"
x = s[3:]
print(x)
// 結果 "DE FGHIJ"
x = s[3:]
print(x)
// 結果 "DE F"
```

#### JavaScript （.substring()）※開始は0, 文字位置指定
```javascript
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, 文字数指定
```Visual Basic
s = "ABCDE FGHIJ"
x = Left(s, 3)
Debug.Print x
' 結果 "ABC"
```

#### Java （substring）※開始は0, 文字位置指定
```Java
s = "ABCDE FGHIJ";
x = s.substring(0, 3);
System.out.print(x);
// 結果 "ABC"
```

#### C#（Substring）※開始は0, 文字数指定
```c#
s = "ABCDE FGHIJ";
x = s.Substring(0, 3);
Console.WriteLine(x);
// 結果 "ABC"
```

#### PHP（mb_substr）※開始は0, 文字数指定
```php
$s = "ABCDE FGHIJ";
$x = mb_substr($s, 0, 3);
print_r($x);
// 結果 "ABC"
```

#### Python（[:]）※開始は0, 文字位置指定
```python
s = "ABCDE FGHIJ"
x = s[3:]
print(x)
// 結果 "HIJ"
```

#### JavaScript （.substring()）※開始は0, 文字位置指定
```javascript
s = "ABCDE FGHIJ";
x = s.substring(0, 3);
console.log(x);
// 結果 "ABC"
```

# 文字列から右側の指定文字数の文字を取得する

#### VBA （Right）※開始は1, 文字数指定
```Visual Basic
s = "ABCDE FGHIJ"
x = Right(s, 3)
Debug.Print x
' 結果 "HIJ"
```

#### Java （substring）※.length()と組み合わせて開始位置を計算
```Java
s = "ABCDE FGHIJ";
x = s.substring(s.length() - 3);
System.out.print(x);
// 結果 "HIJ"
```

#### C#（Substring）※開始は0, 文字数指定
```c#
s = "ABCDE FGHIJ";
x = s.substring(s.Length - 3);
Console.WriteLine(x);
// 結果 "HIJ"
```

#### PHP（mb_substr）※開始は0, マイナスの文字数指定
```php
$s = "ABCDE FGHIJ";
$x = mb_substr($s, -3);
print_r($x);
// 結果 "HIJ"
```

#### Python（[:]）※開始は0, マイナスの文字数指定
```python
s = "ABCDE FGHIJ"
x = s[-3:]
print(x)
// 結果 "HIJ"
```

#### JavaScript （.substring()）※開始は0, 文字位置指定
```javascript
s = "ABCDE FGHIJ";
x = s.substring(s.length() - 3);
console.log(x);
// 結果 "HIJ"
```

# 文字列から指定文字を検索する

#### VBA （InStr）※開始は1, 文字数指定
```Visual Basic
s = "ABCDE FGHIJ"
i = InStr(s, "DE")
Debug.Print i
' 結果 4
```

#### Java （.indexOf）※開始は0
```Java
s = "ABCDE FGHIJ";
i = s.indexOf("DE");
System.out.print(i);
// 結果 3
```

#### C#（.IndexOf）※開始は0
```c#
s = "ABCDE FGHIJ";
i = s.IndexOf("DE");
Console.WriteLine(i);
// 結果 3
```

#### PHP（mb_strpos）※開始は0
```php
$s = "ABCDE FGHIJ";
$i = mb_strpos($s, "DE");
print_r($i);
// 結果 3
```

#### Python（find）※開始は0
```python
s = "ABCDE FGHIJ"
i = s.find("DE")
print(i)
// 結果 3
```

#### JavaScript （.lastIndexOf()）※開始は0
```javascript
s = "ABCDE FGHIJ";
i = s.lastIndexOf("DE");
console.log(i);
// 結果 4
```

# 文字列の後ろから指定文字を検索する

#### VBA （InStr）※開始は1
```Visual Basic
s = "ABCDE FGHIJDE"
i = InStr(s, "DE")
Debug.Print i
' 結果 12
```

#### Java （.lastIndexOf）※開始は0
```Java
s = "ABCDE FGHIJDE";
i = s.lastIndexOf("DE");
System.out.print(i);
// 結果 11
```

#### C#（.LastIndexOf ）※開始は0
```c#
s = "ABCDE FGHIJDE";
i = s.LastIndexOf ("DE");
Console.WriteLine(i);
// 結果 11
```

#### PHP（mb_strrpos）※開始は0
```php
$s = "ABCDE FGHIJDE";
$i = mb_strrpos($s, "DE");
print_r($i);
// 結果 11
```

#### Python（rfind）※開始は0
```python
s = "ABCDE FGHIJDE"
i = s.rfind("DE")
print(i)
// 結果 11
```

#### JavaScript （.lastIndexOf()）※開始は0, 文字位置指定
```javascript
s = "ABCDE FGHIJDE";
i = s.lastIndexOf("DE");
console.log(i);
// 結果 11
```

# 文字列を置換する

#### VBA （Replace）
```Visual Basic
s = "ABCDE FGHIJ"
x = Replace(s, "DE", "YZ")
Debug.Print x
' 結果 "ABCYZ FGHIJ"
```

#### Java （replace）
```Java
s = "ABCDE FGHIJ";
x = s.replace("DE", "YZ");
System.out.print(x);
// 結果 "ABCYZ FGHIJ"
```

#### C#（Replace）
```c#
$s = "ABCDE FGHIJ";
$x = $s.Replace("DE", "YZ");
Console.WriteLine($x);
// 結果 "ABCYZ FGHIJ"
```

#### PHP（str_replace）
```php
$s = "ABCDE FGHIJ";
$x = str_replace("DE", "YZ", $s);
print_r($x);
// 結果 "ABCYZ FGHIJ"
```

#### Python（replace）
```python
s = "ABCDE FGHIJ"
x = s.replace("DE", "YZ")
print(x)
// 結果 "ABCYZ FGHIJ"
```

#### JavaScript （.replace()）※開始は0, 文字位置指定
```javascript
s = "ABCDE FGHIJ";
x = s.replace("DE", "YZ");
console.log(x);
// 結果 "ABCYZ FGHIJ"
```

# アルファベットの小文字を大文字に変換する

#### VBA （UCase）
```Visual Basic
s = "abcde fghij"
x = UCase(s)
Debug.Print x
' 結果 "ABCDE FGHIJ"
```

#### Java （toUpperCase）※全角文字もいける
```Java
s = "abcde fghij";
x = s.toUpperCase();
System.out.print(x);
// 結果 "ABCDE FGHIJ"
```

#### C#（ToUpper）
```c#
s = "abcde fghij";
x = s.ToUpper();
Console.WriteLine(x);
// 結果 "ABCDE FGHIJ"
```

#### PHP（mb_strtoupper）
```php
$s = "abcde fghij";
$x = mb_strtoupper($s);
print_r($x);
// 結果 "ABCDE FGHIJ"
```

#### Python（upper）
```python
s = "abcde fghij"
x = s.upper()
print(x)
// 結果 "ABCDE FGHIJ"
```

#### JavaScript （.toLowerCase()）
```javascript
s = "abcde fghij";
x = s.toUpperCase();
console.log(x);
// 結果 "ABCDE FGHIJ"
```


# アルファベットの大文字を小文字に変換する

#### VBA （LCase）
```Visual Basic
s = "ABCDE FGHIJ"
x = LCase(s)
Debug.Print x
' 結果 "abcde fghij"
```

#### Java （toLowerCase）※全角文字もいける
```Java
s = "ABCDE FGHIJ";
x = s.toLowerCase();
System.out.print(x);
// 結果 "abcde fghij"
```

#### C#（ToLower）
```c#
s = "ABCDE FGHIJ";
x = s.ToLower();
Console.WriteLine(x);
// 結果 "abcde fghij"
```

#### PHP（mb_strtolower）
```php
$s = "ABCDE FGHIJ";
$x = mb_strtolower($s);
print_r($x);
// 結果 "abcde fghij"
```

#### Python（lower）
```python
s = "ABCDE FGHIJ"
x = s.lower()
print(x)
// 結果 "abcde fghij"
```

#### JavaScript （.toLowerCase()）
```javascript
s = "ABCDE FGHIJ";
x = s.toLowerCase();
console.log(x);
// 結果 "abcde fghij"
```

# 両端のスペースを削除する

#### VBA （Trim）
```Visual Basic
s = "  ABCDE FGHIJ  "
x = Trim(s)
Debug.Print x
' 結果 "ABCDE FGHIJ"
```

#### Java （trim）
```Java
s = "  ABCDE FGHIJ  ";
x = s.trim();
System.out.print(x);
// 結果 "ABCDE FGHIJ"
```

#### C#（Trim）
```c#
s = "  ABCDE FGHIJ  ";
x = s.Trim();
Console.WriteLine(x);
// 結果 "ABCDE FGHIJ"
```

#### PHP（trim）
```php
$s = "  ABCDE FGHIJ  ";
$x = trim($s);
print_r($x);
// 結果 "ABCDE FGHIJ"
```

#### Python（strip）
```python
s = "  ABCDE FGHIJ  "
x = s.strip()
print(x)
// 結果 "ABCDE FGHIJ"
```

#### JavaScript （.trim()）
```javascript
s = "  ABCDE FGHIJ  ";
x = s.trim();
console.log(x);
// 結果 "ABCDE FGHIJ"
```

# 左側のスペースを削除する

#### VBA （LTrim ）
```Visual Basic
s = "  ABCDE FGHIJ  "
x = LTrim (s)
Debug.Print x
' 結果 "ABCDE FGHIJ  "
```

#### Java （replaceAll）※正規表現を利用するのでちょい面倒
```Java
s = "  ABCDE FGHIJ  ";
x = s.replaceAll("^\\s+", "");
System.out.print(x);
// 結果 "ABCDE FGHIJ  "
```

#### C#（TrimStart）
```c#
s = "  ABCDE FGHIJ  ";
x = s.TrimStart(s);
Console.WriteLine(x);
// 結果 "ABCDE FGHIJ  "
```

#### PHP（ltrim）
```php
$s = "  ABCDE FGHIJ  ";
$x = ltrim($s);
print_r($x);
// 結果 "ABCDE FGHIJ  "
```

#### Python（lstrip）
```python
s = "  ABCDE FGHIJ  "
x = s.lstrip()
print(x)
// 結果 "ABCDE FGHIJ  "
```

#### JavaScript （.trimStart()）※開始は0, 文字位置指定
```javascript
s = "  ABCDE FGHIJ  ";
x = s.trimStart();
console.log(x);
// 結果 "ABCDE FGHIJ  "
```

# 右側のスペースを削除する

#### VBA （RTrim）
```Visual Basic
s = "  ABCDE FGHIJ  "
x = RTrim (s)
Debug.Print x
' 結果 "  ABCDE FGHIJ"
```

#### Java （toLowerCase）
```Java
s = "  ABCDE FGHIJ  ";
x = s.replaceAll("\\s+$", "");
System.out.print(x);
// 結果 "  ABCDE FGHIJ"
```

#### C#（TrimEnd）
```c#
s = "  ABCDE FGHIJ  ";
x = s.TrimEnd();
Console.WriteLine(x);
// 結果 "  ABCDE FGHIJ"
```

#### PHP（rtrim）
```php
$s = "  ABCDE FGHIJ  ";
$x = rtrim($s);
print_r($x);
// 結果 "  ABCDE FGHIJ"
```

#### Python（rstrip）
```python
s = "  ABCDE FGHIJ  "
x = s.rstrip()
print(x)
// 結果 "  ABCDE FGHIJ"
```

#### JavaScript （.trimEnd()）※開始は0, 文字位置指定
```javascript
s = "  ABCDE FGHIJ  ";
x = s.trimEnd();
console.log(x);
// 結果 "  ABCDE FGHIJ"
```

# 文字列を数値に変換する

#### VBA （CInt）
```Visual Basic
s = "01001"
i = CInt(s)
Debug.Print i
' 結果 1001
```


#### Java （Integer.parseInt）
```Java
s = "01001";
i = Integer.parseInt(s)
System.out.print(i);
// 結果 1001
```

#### C# （Int32.Parse）
```c#
s = "01001";
i = Int32.Parse(s);
Console.WriteLine(i);
// 結果 1001
```

#### PHP （int）
```php
$s = "01001";
$i = (int)$s;
print_r($i);
// 結果 1001
```

#### Python （int）
```python
s = "01001"
i = (int)s
print(i)
// 結果 1001
```

#### JavaScript （Number）
```javascript
s = "01001"
i = Number(s);
console.log(i)
// 結果 1001
```

# 文字列を日付に変換する

#### VBA （CDate）
```Visual Basic
s = "2015/07/07"
d = CDate(s)
Debug.Print d
' 結果 2015/07/07
```


#### Java （SimpleDateFormat）
```Java
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）
```c#
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）
```php
$s = "2015/07/07";
$d = strtotime($s);
print_r($d);
// 結果 2015/07/07
```

#### Python （datetime）
```python
s = "2015/07/07"
d = datetime.datetime.strptime(s, "yyyy/MM/dd")
print(d)
// 結果 2015/07/07
```

#### JavaScript （Date）
```javascript
s = "2015/07/07"
d = new Date(s);
console.log(d)
// 結果 2015/07/07
```

# 数値を文字列に変換する


#### VBA （Str）
```Visual Basic
i = 100
s = Str(i)
Debug.Print s
' 結果 "100"
```


#### Java （String.valueOf）
```Java
i = 100
s = String.valueOf(i);
System.out.print(s);
// 結果 "100"
```

#### C# （.ToString）
```c#
i = 100
s = i.ToString(); 
Console.WriteLine(s);
// 結果 "100"
```

#### PHP （string）
```php
$i = 100;
$s = (string)$i;
print_r($s);
// 結果 "100"
```

#### Python （str）
```python
i = 100
s = str(i)
print(s)
// 結果 "100"
```

#### JavaScript （Number）
```javascript
i = 100
i = Number(s);
console.log(i)
// 結果 "100"
```

# 日付を文字列に変換する

#### VBA （Format）
```Visual Basic
d = CDate("2015/07/07")
s = Format(d, "yyyy/mm/dd")
Debug.Print s
' 結果 "2015/07/07"
```


#### Java （SimpleDateFormat）
```Java
Date d= new Date();
DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd");
s= dateFormat.format(d);
System.out.print(s);
// 結果 "2015/07/07"
```

#### C# （.ToString）
```c#
DateTime d = new DateTime(2015, 7, 7);
s = dt.ToString("yyyy/MM/dd")
Console.WriteLine(s);
// 結果 "2015/07/07"
```

#### PHP （date）
```php
$d = strtotime("2015/07/07");
$s = date("Y/m/d", $d)
print_r($s);
// 結果 "2015/07/07"
```

#### Python （strftime）
```python
d = datetime.datetime.now()
s= d.strftime('%Y/%m/%d')
print(s)
// 結果 "2015/07/07"
```

#### JavaScript （Date）※面倒でした
```javascript
d = new Date("2015/07/07");
s = d.getFullYear() + "/" + (d.getMonth() + 1) + "/" + d.getDate();
console.log(s)
// 結果 "2015/7/7"
```