文字列から文字を取り出す。(C#、Java、JavaScript、PHP、Python3、Ruby比較)

 文字列中の指定された位置から文字を取り出す処理。文字列を扱う上での基本であり、演習問題などで定番になっています。

 今回は、標準入力された文字列と先頭から〇番目を指定する数値を使い、文字列の指定された場所から文字を1つ取り出す処理について、C#、Java、JavaScript、PHP、Python3、Rubyの6言語で書いてみました。

C#
using System;
public class Hello{
    public static void Main(){
        string str = Console.ReadLine().Trim();
        int n = int.Parse(Console.ReadLine());

        Console.WriteLine(str[n-1]);
        Console.WriteLine(str.Substring(n-1,1));
    }
}

 文字列[n-1]もしくは、文字列.Substring(n-1,1)で、先頭からn番目(文字列の位置は0から始まるので-1する)の文字を1つ取り出せます。

 Substring(a,b)は、aが開始位置、bが取り出す文字数となっています。

Java
import java.util.*;

public class Main {
    public static void main(String[] args) throws Exception {
        Scanner scan = new Scanner(System.in);
        String str = scan.next();
        int n = scan.nextInt();

        System.out.println(str.charAt(n-1));
        System.out.println(str.substring(n-1,n));
    }
}

 文字列.charAt(n-1)もしくは、文字列.substring(n-1,n)で、先頭からn番目(文字列の位置は0から始まるので-1する)の文字を1つ取り出せます。

 substring(a,b)は、aが開始位置、bが終了位置となっており、aの位置からaとbの差分の文字数を取り出せます。

JavaScript
process.stdin.resume();
process.stdin.setEncoding('utf8');

var lines = [];
var reader = require('readline').createInterface({
    input: process.stdin,
    output: process.stdout
});

reader.on('line', (line) => {
    lines.push(line);
});

reader.on('close', () => {
    var str = lines[0];
    var n = parseInt(lines[1]);

    console.log(str[n-1]);
    console.log(str.charAt(n-1));
    console.log(str.slice(n-1,n));
});

 文字列[n-1]もしくは、文字列.charAt(n-1)、文字列.slice(n-1,n)で、先頭からn番目(文字列の位置は0から始まるので-1する)の文字を1つ取り出せます。

 slice(a,b)は、aが開始位置、bが終了位置となっており、aの位置からaとbの差分の文字数を取り出せます。

PHP
<?php
$str = trim(fgets(STDIN));
$n = (int)trim(fgets(STDIN));

echo $str[$n-1]."\n";
echo substr($str,$n-1,1)."\n";
echo mb_substr($str,$n-1,1)."\n";
?>

 文字列[n-1]もしくは、substr(文字列,$n-1,1)、mb_substr(文字列,$n-1,1)で、先頭からn番目(文字列の位置は0から始まるので-1する)の文字を1つ取り出せます。

 substr(文字列,a,b)、mb_substr(文字列,a,b)は、aが開始位置、bが終了位置となっており、aの位置からaとbの差分の文字数を取り出せます。

 扱う文字列が2バイトの場合は、mb_substr(文字列,a,b)を使用。文字列[n-1]、substr(文字列,$n-1,1)で2バイト文字を扱うと、文字化けして正常に表示されないです。

Python3
str = input().rstrip()
n = int(input().rstrip())

print(str[n-1])

 文字列[n-1]、先頭からn番目(文字列の位置は0から始まるので-1する)の文字を1つ取り出せます。

Ruby
str = gets.chomp
n = gets.chomp.to_i

puts str[n-1]
puts str.slice(n-1,1)

 文字列[n-1]もしくは、文字列.slice(n-1,1)で、先頭からn番目(文字列の位置は0から始まるので-1する)の文字を1つ取り出せます。

 slice(a,b)は、aが開始位置、bが取り出す文字数となっています。

 文字列の指定された位置から文字を1文字取り出す処理を振り返ると、今回扱った6言語のうち、Javaを除いた5言語(C#、JavaScript、PHP、Python3、Ruby)では、文字列[a]とすることで、aの位置の文字を1文字取り出すことが可能になってました。

にほんブログ村 ゲームブログへ

スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする