JavaScript文字列

JavaScript 文字列

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

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

document.write("");

us 上記のスクリプトはいくつかの文字列を作成しますが、本質的には実際の文字列オブジェクトではありません。正確に言うと、文字列オブジェクトを作成するには、次のステートメントを使用します。 var strObj = new String("Hello, String!") );

typeof 演算子を使用すると、上記の myStr 型が string であり、strObj 型が object であることがわかります


文字列の長さを知りたい場合は、それを使用します。属性: string.length
文字列の指定された位置にある文字を取得します。 使用法: string.charAt(index);

文字列の結合
問題: 2 つ以上の文字列を 1 つの大きな文字に結合します 文字列の解決策:
Very単純に、「+」を使用して 2 つの文字列を「追加」するだけです:

var longString = "One piece " + "plus one more piece.";

複数の文字列を 1 つの文字列に蓄積するには、「+=」演算子を使用することもできます:

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

文字列に改行文字を追加するには、エスケープ文字「n」を使用する必要があります:

var confirmString = "You did not enter a response to the last " +        "question.\n\nSubmit form anyway?";var confirmValue = confirm(confirmString);

ただし、このメソッドは警告や確認ダイアログ ボックスのような状況でのみ使用できます。このテキストが HTML コンテンツとして表示される場合は、無効になります。この場合は、「
」を使用して置き換えます。 object はメソッド concat() も提供します。これは "+" と同じ機能を実行します: string.concat(value1, value2, ...)
ただし、concat() メソッドは明らかに "+" ほど直感的で簡潔ではありません。 。

文字列の部分文字列へのアクセス
質問:
文字列の一部のコピーを取得します。

解決策:

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

 var htmlString = "First line of string.
Second line of string.";
document.write(htmlString);


slice() のプロトタイプは次のとおりです: 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(); // city は現在 "shanghai" です。

2 つの文字列が等しいかどうかを判断します
質問:
たとえば、ユーザーの入力を取得したいとします。 value 既知の文字列と比較します
解決策:
まずすべてのユーザー入力値を大文字 (または小文字) に変換してから比較します:

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

JavaScript には 2 つの等価演算子があります。 1 つは完全に下位互換性のある標準の「==」です。2 つのオペランドの型が一致しない場合は、次の代入ステートメントを考慮してください。

var strA = " i love you!" ;
var strB = new String("i love you!");

これら 2 つの変数には同じ文字列が含まれていますが、前者は文字列、後者はオブジェクトです。 =" 演算子を使用すると、JavaScript はさまざまな評価を試みて、特定の状況下で 2 つが等しいかどうかを確認します。したがって、次の式は 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() メソッドを呼び出します。並べ替える

文字列検索

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

(largestring.indexof (shortstring)! = -1) {
// 組み込まれている場合は、それに応じて処理され、文字列の長さを計算します。
りー

学び続ける
||
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> </head> <body> <p id="demo"></p> <script> var x = "John"; // x 是字符串 var y = new String("John"); // y 是一个对象 document.getElementById("demo").innerHTML = x===y; </script> <p>=== 为绝对相等,即数据类型与值都必须相等。</p> </body> </html>