文字列の最初の文字を取得する方法は?


595

文字列があり、その最初の文字を取得する必要があります。

var x = 'somestring';
alert(x[0]); //in ie7 returns undefined

コードを修正するにはどうすればよいですか?


5
注意してください-そこに抽出するキャラクターがないかもしれません!
corsiKa 2010

回答:


1046

あなたが欲しいのはcharAtです。

var x = 'some string';
alert(x.charAt(0)); // alerts 's'

11
IE7、Chrome、Firefoxで作業しました。
Yuriy Faktorovich、2010

78
ここにMDNドキュメントを残したかっただけです。私は通常、これをw3schoolsよりも好みます。
danwit 2014

12
x.charAt()また、インデックスがこのメソッドに渡されない場合と同様に、最初の文字を返し0ます。
Mohammad Usman

1
@MohammadUsmanあなたが言っていることは真実ですが、残念ながら、パラメータを指定しないcharAt()は、Firefox 71以降、chartAt(0)よりも実際に10倍遅く実行されます。jsperf.com
スティーブンMアービング

このソリューションはASCIIには適していますが、それ以上の問題に対処するとすぐに、あらゆる方法で問題が解決します。 "👍".charAt(0)戻って"\ud83d""café".charAt(3)戻ってeアクセントをドロップなどstackoverflow.com/questions/38345372/...(ライブラリを使用)いくつかの情報と良い代替を持っている
クレマン

149

JavaScriptではこれを行うことができます:

const x = 'some string';
console.log(x.substring(0, 1));


5
サブ文字列関数を使用したい場合x.slice(0,1)は、より短いです。そして、最後の文字を取得するには、単に使用:x.slice(-1)
S.Serpooshan

60

これらはどれでも使用できます。

これらすべてには少し違いがありますので、条件ステートメントで使用する場合は注意してください。

var string = "hello world";
console.log(string.slice(0,1));     //o/p:- h
console.log(string.charAt(0));      //o/p:- h
console.log(string.substring(0,1)); //o/p:- h
console.log(string.substr(0,1));    //o/p:- h
console.log(string[0]);             //o/p:- h


var string = "";
console.log(string.slice(0,1));     //o/p:- (an empty string)
console.log(string.charAt(0));      //o/p:- (an empty string)
console.log(string.substring(0,1)); //o/p:- (an empty string)
console.log(string.substr(0,1));    //o/p:- (an empty string)
console.log(string[0]);             //o/p:- undefined

3
string.substr(0,1);がありません。:)
Luckylooke 2018年


18

すべての方法の例

まずstring.charAt(index)

インデックスでキャラクトを返す index

var str = "Stack overflow";

console.log(str.charAt(0));

第二string.substring(start,length);

インデックスで始まりstart、長さの後に停止する文字列の部分文字列を返しますlength

ここでは、だけなので最初caractをしたい:start = 0length = 1

var str = "Stack overflow";

console.log(str.substring(0,1));

代替string[index]

文字列はcaractの配列です。したがって、配列の最初のセルのような最初のcaractを取得できます。

index文字列のインデックスにある文字を返します

var str = "Stack overflow";

console.log(str[0]);


console.time()を使用して単一の操作のタイミングをとることは、パフォーマンスの合理的または正確なテストではありません。COURSEの場合、1回の操作の時間のみを測定しても、それらの間に大きな違いはありません。これらのメソッドは実際には異なる動作をします。
スティーブンMアービング

17
var x = "somestring"
alert(x.charAt(0));

charAt()メソッドを使用すると、必要な文字の位置を指定できます。

あなたがやろうとしていたのは、配列 "x"の位置に文字を取得することです。これは、Xが配列ではないため、定義されていません。


15

を使用sliceして、他のすべての文字をカットオフすることもできます。

x.slice(0, 1);

この方法は、これを解決する最もパフォーマンスの低い方法の1つになります。次善。
Stephen M Irving

7
var str="stack overflow";

firstChar  = str.charAt(0);

secondChar = str.charAt(1);

IE6 +FFChromesafariでテスト済み。


12
好奇心旺盛ですが、この回答を投稿した理由はありますか?受け入れられた回答の複製のようです。
マナテリン

5
彼らは、それがテストされたブラウザーのように、(それがコメントであるべきであったとしても)いくつかの追加情報を提供しindexOfました。IE8では機能しないことは知っています。私は実際にこの答えをここまで見るまで、google charAt互換性を使い始めました。
gloomy.penguin 2013

6

これも試してください:

x.substr(0, 1);

substr()はレガシー関数と見なされており、可能な限り回避する必要があります。実際にはJS言語の一部ではなく、いつでも削除できます。すべての新しいコードでsubstr()を使用しないでください。他のメソッドを使用するには、古いコードをリファクタリングする必要があります。developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/...
スティーブン・Mアーヴィング

2

x.substring(0,1)

細部

substring(start, end) 文字列から、2つのインデックス「start」と「end」の間の文字を抽出します。「end」自体含まれません

特記事項

  • 「開始」が「終了」より大きい場合、このメソッドは2つの引数を入れ替えます。つまり、str.substring(1、4)== str.substring(4、1)を意味します。
  • 「開始」または「終了」のいずれかが0未満の場合、0であるかのように扱われます。

2

私はパーティーに遅れているようですが、私が個人的に最良の解決策を見つけた以下の解決策を試してください:

var x = "testing sub string"
alert(x[0]);
alert(x[1]);

出力には、以下の値のアラートが表示されます: "t" "e"


0

JQueryで使用できる:Select Optionのクラス:

$('.className').each(function(){
    className.push($("option:selected",this).val().substr(1));
});

クラスのテキスト値:

$('.className').each(function(){
    className.push($(this).val().substr(1));
});

テキストのIDの値:

$("#id").val().substr(1)

0

NodejsではBufferを使用できます:

let str = "hello world"
let buffer = Buffer.alloc(2, str) // replace 2 by 1 for the first char
console.log(buffer.toString('utf-8')) // display he
console.log(buffer.toString('utf-8').length) // display 2

0
var string  = "Hello World";
console.log(charAt(0));

charAt(0)はJavaScriptメソッドであり、インデックスに基づいて値を返します。ここで、0は最初の文字のインデックスです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.