ホームページ > ウェブフロントエンド > jsチュートリアル > JavaScript_javascriptスキルの文字列操作の詳細説明

JavaScript_javascriptスキルの文字列操作の詳細説明

WBOY
リリース: 2016-05-16 17:15:53
オリジナル
985 人が閲覧しました

1. 概要
JavaScript では、ユーザー入力データを処理するとき、DOM オブジェクトのプロパティを読み取ったり設定したり、Cookie を操作したりするときに、文字列がほとんど使用されます。 JavaScript のコア部分は、文字列の分割、文字列の大文字と小文字の変更、部分文字列の操作など、一般的な文字列操作のためのプロパティとメソッドのセットを提供します。
現在のほとんどのブラウザでも、正規表現を利用すると多くの文字列操作タスクが大幅に簡素化されるため、正規表現の恩恵を受けることができますが、ある程度急な学習曲線を克服する必要もあります。ここでは、主に文字列自体に対するいくつかの操作を紹介します。正規表現については、今後のエッセイで説明します。

2. 文字列の作成
文字列を作成するにはいくつかの方法があります。最も簡単な方法は、一連の文字を引用符で囲むことです。これを文字列変数に割り当てることができます。
var myStr = "Hello, String!";
二重引用符または一重引用符を使用して文字列を囲むことができますが、文字列を区切る引用符のペアは同じである必要があり、混合できないことに注意してください。
var myString = "Fluffy is a pretty cat.'; のような宣言は不正です。
2 種類の引用符の使用を許可し、一方をもう一方に埋め込むなど、特定の操作を簡素化します。

コードをコピー コードは次のとおりです。

document.write("ロゴ");

上記のスクリプトではいくつかの文字列を作成しましたが、本質的には、これらは実際の文字列オブジェクトではなく、正確には文字列型の値です。文字列オブジェクトを作成するには、次のステートメントを使用できます: var strObj = new String("Hello, String!");
typeof 演算子を使用すると、上記の myStr 型が string であり、strObj 型であることがわかります。オブジェクトです。

文字列の長さを知りたい場合は、その長さプロパティ string.length を使用します。
文字列の指定された位置にある文字を取得するメソッド: string.charAt(index);

3. 文字列の連結
問題:
2 つ以上の文字列を 1 つの大きな文字列に結合する
解決策:
非常に簡単です。" " を使用して 2 つの文字列を「追加」するだけです:

コードをコピーします コードは次のとおりです:

var longString = "1 個 " " プラスもう 1 個.";

複数の文字列を 1 つの文字列に蓄積するには、「 =」演算子を使用することもできます:
コードをコピー コードは次のとおりです。

var result = "";
result = "My name is Anders"
result = " and my age is 25" ;

文字列に改行文字を追加するには、エスケープ文字「n」を使用する必要があります:
コードをコピー コードは次のとおりです:

varconfirmString = "最後の "
"question.nnSubmit フォームへの回答を入力していませんか?" ;
varconfirmValue =confirm(confirmString);

ただし、このメソッドは、警告や確認ダイアログ ボックスなどの状況でのみ使用できます。このテキストが HTML コンテンツとして表示されている場合は無効です。「<」に置き換えてください。 ;br>":

コードをコピー コードは次のとおりです:

var htmlString = "文字列の最初の行。 document.write(htmlString);

String オブジェクトには、" " と同じ機能を実行するメソッド concat() も用意されています。
string.concat(value1, value2, ...)
ただし、concat() メソッドは明らかにそうではありません。 " " と同じくらい良い 直感的で簡潔。

4. 文字列の部分文字列へのアクセス
質問:
文字列の一部のコピーを取得します。
解決策:
substring() または slide() メソッド (NN4、IE4) を使用します。その具体的な使用法については以下で説明します。
substring() のプロトタイプは次のとおりです: string.substring(from, to)
最初のパラメーター from は、元の文字列内の部分文字列の開始位置を指定します (0 から始まるインデックス)。2 番目のパラメーター to はオプションです。 . これは、元の文字列内の部分文字列の終了位置を指定します (0 から始まるインデックス)。これを省略すると、部分文字列は最後まで続きます。
パラメータ from が誤ってパラメータ to よりも大きい場合はどうなりますか? JavaScript は部分文字列の開始位置と終了位置を自動的に調整します。つまり、substring() は常に 2 つのパラメーターのうち小さい方から始まり、大きい方で終わります。ただし、開始位置の文字は含まれますが、終了位置の文字は含まれないことに注意してください。

コードをコピー コードは次のとおりです:

var fullString = "すべての犬は彼の日。";
var Section = fullString.substring(0, 4); // セクションは「Ever」です。
section = fullString.substring(4, 0); // セクションも「Ever」です.
section = fullString.substring(1, 1); // セクションは空の文字列です。
section = fullString.substring(-2, 4); // セクションは fullString と同じ「Ever」です。部分文字列(0, 4 );

スライス() のプロトタイプは次のとおりです: string.slice(start, end)
パラメータ start は部分文字列の開始位置を表し、負の数の場合は最後からの番号として理解できます。たとえば、-3 は下から 3 番目の開始を意味し、パラメータ end は start と同様に負の数にすることもでき、その意味は最後から 2 番目の位置の終了も示します。 lice() のパラメータは負の値も指定できるため、substring() よりも柔軟性が高くなりますが、start が end よりも大きい場合は空の文字列が返されます (例は省略)。
もう 1 つのメソッドは substr() で、そのプロトタイプは次のとおりです: string.substr(start, length)
プロトタイプから、start が開始位置を表し、length が部分文字列を表すことがわかります。長さ。 JavaScript 標準では、このメソッドの使用は推奨されていません。
5. 文字列の大文字と小文字の変換
問題:
都市などのユーザー入力情報を受け取るテキスト ボックスがあり、文字列の比較は自然に行われます。現時点では使用されるため、比較する前に大文字と小文字の変換を実行して、変換後の状況のみを考慮するか、ページ上のデータを収集してデータベースに保存することが最善です。データベース このような場合、文字列の大文字と小文字の変換を考慮する必要があります。
解決策:
toLowerCase() メソッドと toUpperCase() メソッドを使用します:

コードをコピー コードは次のとおりです。

var city = "Shanghai";
city = city.toLowerCase(); // 現在、都市は "shanghai" です。

6. 2 つの文字列を決定します。等しいですか?
問題:
たとえば、ユーザーの入力値を既知の文字列と比較したいとします
解決策:
まず、すべてのユーザー入力値を大文字 (または小文字) に変換します。 )、次に比較します:

コードをコピー コードは次のとおりです:

var name = document.form1.txtUserName。 value.toLowerCase ();
if(name == "urname")
{
// ここにステートメントが入ります。
}

JavaScript には 2 つの等価演算子があります。 1 つは完全に下位互換性のある標準の「==」です。2 つのオペランドの型が一致しない場合、ある時点で自動的にオペランドの型変換が実行されます。

について考えてみましょう。

コードをコピーします コードは次のとおりです:

var strA = "i love you!" ;
var strB = new String("愛しています!");

これら 2 つの変数には同じ文字シーケンスが含まれていますが、前者は文字列、後者はオブジェクトです。「==」演算子を使用すると、JavaScript は両方が等しいかどうかを検出するためにさまざまな評価を試みます。状況。したがって、次の式は true と評価されます: strA == strB。
2 番目の演算子は「厳密」な「===」ですが、これは評価時にそれほど寛容ではなく、型変換を実行しません。したがって、両方の変数が同じ値を保持しているにもかかわらず、式 strA === strB は false と評価されます。
コードのロジックでは、2 つの値が等しくないかどうかを判断する必要がある場合があります。「!=」と厳密な「!==」の関係も同様です。 =と「===」。
ディスカッション:
「==」と「!=」は、評価時に一致する値を見つけるために最善を尽くしますが、「役立つ」ように比較する前に明示的な型変換を実行することもできます。たとえば、ユーザーの入力値 (文字列) が数値に等しいかどうかを判断したい場合は、「==」を使用して型変換を完了できます:
if(document.form1.txtAge.value == someNumericVar) { .. }
事前に変換することもできます:
if(parseInt(document.form1.txtAge.value) == someNumericVar) { ... }
に慣れている場合強く型指定されたプログラミング言語 (C#、Java など) を使用している場合は、ここで習慣 (型変換) を続けることができ、プログラムの可読性も向上します。

注意する必要があることが 1 つあります。それは、コンピューターの地域設定です。 「<」と「>」を使用して文字列を比較すると、JavaScript はそれらを Unicode として比較しますが、明らかに Web を閲覧している人はテキストを Unicode として読みません:) たとえば、スペイン語では、従来の並べ替えに従って、「ch」 " は "c" と "d" の間の文字としてソートされます。 localeCompare() は、デフォルトのロケールの文字照合を使用する方法を提供します。

コードをコピーします コードは次のとおりです。

var strings; // 文字列配列。
strings.sort(function(a,b) { return a.localeCompare(b) }); // sort() メソッドを呼び出して並べ替えます

7. 文字列の検索
質問:
文字列に別の文字列が含まれているかどうかを判断します。
解決策:
文字列のindexOf() メソッドを使用します:
strObj.indexOf(subString[, startIndex])
strObj は判定対象の文字列、subString は strObj 内で検出される部分文字列です。文字列、startIndex はオプションで、検索の開始位置 (0 から始まるインデックス) を示します。startIndex が省略された場合は、strObj の先頭から検索します。startIndex が 0 未満の場合は 0 から開始し、startIndex が 0 より大きい場合は 0 から開始します。最大インデックスを指定し、最大インデックスで開始から検索します。
indexOf() は、strObj 内の subString の開始位置を返します。見つからない場合は、-1 を返します。スクリプトでは、次のように使用できます:

コードをコピーします コードは次のとおりです:

if(largeString.indexOf(shortString) != -1)
{
// 含まれている場合は、それに応じて処理します。
}

文字列には別の文字列が含まれる可能性があります。 string を複数回使用する場合は、2 番目のパラメータ startIndex が便利です。次の関数は、文字列に別の文字列が含まれる回数を見つける方法を示しています。

コードをコピーします コードは次のとおりです。
function countInstances(mainStr, subStr)
{
var count = 0;
var offset = 0;
do
{
offset = mainStr.indexOf(subStr, offset);
if(offset != -1 )
;
}


String オブジェクトには、indexOf()、lastIndexOf() に対応するメソッドがあります:
strObj.lastIndexOf(substring[, startindex])
strObj は判定対象の文字列、subString は strObj の部分文字列内で検索されますstartIndex はオプションで、検索の開始位置 (0 から始まるインデックス) を示します。startIndex が省略された場合は、strObj の末尾から検索します。startIndex が 0 未満の場合は、0 から開始します。startIndex が最大インデックスより大きい場合は、0 から開始します。 , 次に最大インデックスから開始します。このメソッドは右から左に検索し、strObj 内の subString の最後の位置を返します。見つからない場合は、-1 を返します。

8. Unicode 値と文字列内の文字との間の変換
質問:
文字の Unicode エンコード値を取得し、その逆も行います。
解決策:
文字の Unicode エンコードを取得するには、次のように定義される string.charCodeAt(index) メソッドを使用できます。
strObj.charCodeAt(index)
インデックスは指定されたものです。 strObj オブジェクト位置 (0 から始まるインデックス) 内の文字の場合、戻り値は 0 ~ 65535 の 16 ビット整数です。例:

var strObj = "ABCDEFG";
var code = strObj.charCodeAt(2) // 文字「C」の Unicode 値は 67

Index で指定されたインデックスに文字が存在しない場合、戻り値は NaN になります。

Unicode エンコーディングを文字に変換するには、String.fromCharCode() メソッドを使用します。これは String オブジェクトの「静的メソッド」であるため、使用前に文字列インスタンスを作成する必要はありません。 > String.fromCharCode(c1, c2, ...)
0 個以上の整数を受け入れ、各パラメータで指定された文字を含む文字列を返します。例:

コードをコピーします コードは次のとおりです。
var str = String.fromCharCode(72, 101, 108, 108, 111); = = "Hello"

ディスカッション:
Unicode には世界中の多くの筆記言語の文字セットが含まれていますが、Unicode に文字が含まれているからといって、この文字が警告ダイアログ ボックスやテキスト ボックスで使用されたり、ページのレンダリング時に通常どおりに表示されます。文字セットが使用できない場合は、ページ上に疑問符またはその他の記号として表示されます。一般的な北米のコンピュータでは、中国語の文字セットとそのフォントがインストールされていない限り、画面に中国語の文字を表示できません。
参考:

JavaScript および Dhtml クックブック(Oreilly) ;
JavaScript-The Definitive Guide(4th Edition);

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート