String-Operationen in JavaScript
1. Übersicht
Strings gibt es fast überall in JavaScript, wenn Sie Benutzereingabedaten verarbeiten, wenn Sie das DOM lesen oder festlegen, wenn Sie mit Objekteigenschaften arbeiten Kekse, und natürlich gibt es noch viel mehr…. Der Kernteil von JavaScript stellt eine Reihe von Eigenschaften und Methoden für gängige String-Operationen bereit, z. B. das Teilen von Strings, das Ändern der Groß-/Kleinschreibung von Strings, das Bearbeiten von Teilstrings usw.
Auch die meisten aktuellen Browser können von der Leistungsfähigkeit regulärer Ausdrücke profitieren, da sie eine große Anzahl von String-Manipulationsaufgaben erheblich vereinfachen, aber auch eine etwas steile Lernkurve erfordern. Hier stellen wir hauptsächlich einige Operationen an der Zeichenfolge selbst vor, die in zukünftigen Aufsätzen behandelt werden.
2. Erstellung einer Zeichenfolge
Es gibt mehrere Möglichkeiten, eine Zeichenfolge zu erstellen. Am einfachsten ist es, eine Reihe von Zeichen in Anführungszeichen zu setzen, die einer String-Variablen zugewiesen werden können.
var myStr = "Hello, String!";
Sie können doppelte oder einfache Anführungszeichen verwenden, um eine Zeichenfolge einzuschließen. Beachten Sie jedoch, dass das Anführungszeichenpaar, das die Zeichenfolge begrenzt, gleich sein muss und nicht gemischt werden darf.
Eine Anweisung wie var myString = "Fluffy is a Pretty cat.'; ist illegal.
Ermöglicht die Verwendung von zwei Arten von Anführungszeichen, wodurch bestimmte Vorgänge vereinfacht werden, z. B Ineinander einbetten:
document.write("<img src='img/logo.jpg' height='30' width='100' alt='Logo'>");
Wir haben im obigen Skript mehrere Zeichenfolgen erstellt, aber im Wesentlichen handelt es sich dabei nicht um echte Zeichenfolgenobjekte Genau, es handelt sich um Werte vom Typ String. Um ein String-Objekt zu erstellen, können Sie die folgende Anweisung verwenden: var strObj = new String("Hello, String!");
Mit dem Operator typeof können Sie wird feststellen, dass der obige myStr-Typ ein String ist und der strObj-Typ ein Objekt ist
Wenn Sie die Länge des Strings wissen möchten, verwenden Sie dessen Längenattribut: string.length
So erhalten Sie das Zeichen an der angegebenen Position der Zeichenfolge: string.charAt(index);
3. Zeichenfolgenverkettung
Problem:
Fügen Sie zwei oder mehr Saiten zu einer großen Saite zusammen
Lösung:
Ganz einfach, verwenden Sie einfach ein „+“, um die beiden Saiten zu kombinieren. „Hinzufügen“:
var longString = "One piece " + "plus one more piece.";
Um mehrere Zeichenfolgen zu einer Zeichenfolge zusammenzufassen, können Sie auch den Operator „+=" verwenden:
var result = ""; result += "My name is Anders" result += " and my age is 25";
Zum Hinzufügen Um ein Zeilenumbruchzeichen in eine Zeichenfolge einzufügen, müssen Sie das Escape-Zeichen „n“ verwenden:
var confirmString = "You did not enter a response to the last " + "question.\n\nSubmit form anyway?"; var confirmValue = confirm(confirmString);
Diese Methode kann jedoch nur in Situationen wie Warnungen und Bestätigungsdialogfeldern verwendet werden, wenn Dieser Text wird als HTML-Inhalt dargestellt. In diesem Fall verwenden Sie „
“, um ihn zu ersetzen:
var htmlString = "First line of string.<br>Second line of string."; document.write(htmlString);
Der Das String-Objekt bietet auch die Methode concat(), die die gleiche Funktion wie „+“ ausführt:
Allerdings ist die Methode concat() offensichtlich nicht so gut wie „+“ Intuitiv und prägnantstring.concat(value1, value2, ...)
4. Auf Teilstrings von Strings zugreifen
Problem:
Eine Kopie eines Teils eines Strings erhalten 🎜>Lösung:
Verwenden Sie den Teilstring(). oder Slice()-Methode (NN4+, IE4+). Ihre spezifische Verwendung wird unten erklärt.
Der Prototyp von substring() ist: string.substring(. from, to)
Der erste Parameter from gibt die Startposition der Teilzeichenfolge in der Originalzeichenfolge an (0-basierter Index); der zweite Parameter to ist optional und gibt das Unterzeichen an. Die Zeichenfolge befindet sich am Ende der Originalzeichenfolge (0-basierter Index). größer sein als from. Wenn es weggelassen wird, wird die Teilzeichenfolge an das Ende der ursprünglichen Zeichenfolge gesetzt.
Was passiert, wenn der Parameter von versehentlich größer wird als der Parameter bis? JavaScript passt die Start- und Endpositionen des Teilstrings automatisch an, d. h. substring() beginnt immer mit dem kleineren der beiden Parameter und endet mit dem größeren. Beachten Sie jedoch, dass das Zeichen an der Startposition enthalten ist, nicht jedoch das Zeichen an der Endposition.
Der Prototyp von Slice() ist: string.slice(start, end) Der Parameter start stellt die Startposition des Teilstrings dar ist eine negative Zahl, dann kann es als die Zahl von unten nach vorne verstanden werden, zum Beispiel bedeutet -3, dass der Parameter Ende die Endposition angibt, es kann aber auch negativ sein Zahl, und ihre Bedeutung gibt auch die Zahl von unten bis zum Ende an. Die Parameter von Slice() können negativ sein, daher ist es flexibler als Substring(), aber weniger tolerant. Wenn Start größer als Ende ist, wird ein leerer String zurückgegeben (Beispiel weggelassen).var fullString = "Every dog has his day."; var section = fullString.substring(0, 4); // section is "Ever". section = fullString.substring(4, 0); // section is also "Ever". section = fullString.substring(1, 1); // section is an empty string. section = fullString.substring(-2, 4); // section is "Ever", same as fullString.substring(0, 4);
Eine andere Methode ist substr(), ihr Prototyp ist: string.substr(start, length)
Aus dem Prototyp können wir die Bedeutung seiner Parameter ersehen, start stellt die Startposition dar, Länge gibt die Länge des Teilstrings an. Der JavaScript-Standard rät von der Verwendung dieser Methode ab.
5. String-Kastenkonvertierung
Frage:
在你的页面上有文本框接收用户的输入信息,比如城市,然后你会根据他的城市的不同做不同的处理,这时自然会用到字符串比较,那么在比较前,最好进行大小写转换,这样只要考虑转换后的情形即可;或者要在页面上收集数据,然后将这些数据存储在数据库,而数据库恰好只接收大写字符;在这些情况下,我们都要考虑对字符串进行大小写转换。
解决方案:
使用toLowerCase()和toUpperCase()方法:
var city = "ShanGHai"; city = city.toLowerCase(); // city is "shanghai" now.
六、判断两个字符串是否相等
问题:
比如,你想拿用户的输入值与已知的字符串比较
解决方案:
先将用户的输入值全部转换为大写(或小写),然后再行比较:
var name = document.form1.txtUserName.value.toLowerCase(); if(name == "urname") { // statements go here. }
JavaScript有两种相等运算符。一种是完全向后兼容的,标准的"==",如果两个操作数类型不一致,它会在某些时候自动对操作数进行类型转换,考虑下面的赋值语句:
var strA = "i love you!"; var strB = new String("i love you!");
这两个变量含有相同的字符序列,但数据类型却不同,前者为string,后者为object,在使用"=="操作符时,JavaScript会尝试各种求值,以检测两者是否会在某种情况下相等。所以下面的表达式结果为true: strA == strB。
第二种操作符是"严格"的"===",它在求值时不会这么宽容,不会进行类型转换。所以表达式strA === strB的值为false,虽然两个变量持有的值相同。
有时代码的逻辑要求你判断两个值是否不相等,这里也有两个选择:"!="和严格的"!==",它们的关系就类似于"=="和"==="。
讨论:
"=="和"!="在求值时会尽可能地寻找值的匹配性,但你可能还是想在比较前进行显式的类型转换,以"帮助"它们完成工作。比如,如果想判断一个用户的输入值(字符串)是否等于一个数字,你可以让"=="帮你完成类型转换:
if(document.form1.txtAge.value == someNumericVar) { ... }
也可以提前转换:
if(parseInt(document.form1.txtAge.value) == someNumericVar) { ... }
如果你比较习惯于强类型的编程语言(比如C#,Java等),那么这里你可以延续你的习惯(类型转换),这样也会增强程序的可读性。
有一种情况需要注意,就是计算机的区域设置。如果用"<"和">"来比较字符串,那么JavaScript把它们作为Unicode来比较,但显然,人们在浏览网页时不会把文本当作Unicode来阅读:)比如在西班牙语中,按照传统的排序,"ch"将作为一个字符排在"c"和"d"之间。localeCompare()提供了一种方式,可以帮助你使用默认区域设置下的字符排序规则。
var strings; // 要排序的字符串数组,假设已经得到初始化
strings.sort(function(a,b) { return a.localeCompare(b) }); // 调用sort()方法进行排序
七、字符串的查找
问题:
判断一个字符串是否包含另一个字符串。
解决方案:
使用string的indexOf()方法:
strObj.indexOf(subString[, startIndex])
strObj为要进行判断的字符串,subString为要在strObj查找的子字符串,startIndex是可选的,表示查找的开始位置(基于0的索引),如果startIndex省略,则从strObj开始处查找,如果startIndex小于0,则从0开始,如果startIndex大于最大索引,则从最大索引处开始。
indexOf()返回strObj中subString的开始位置,如果没有找到,则返回-1。在脚本中,可以这么使用:
if(largeString.indexOf(shortString) != -1) { // 如果包含,进行相应处理; }
也许一个字符串会包含另一字符串不止一次,这时第二个参数startIndex也许会派上用场,下面这个函数演示如何求得一个字符串包含另外一个字符串的次数:
function countInstances(mainStr, subStr) { var count = 0; var offset = 0; do { offset = mainStr.indexOf(subStr, offset); if(offset != -1) { count++; offset += subStr.length; } }while(offset != -1) return count; }
String对象有一个与indexOf()对应的方法,lastIndexOf():
strObj.lastIndexOf(substring[, startindex])
strObj为要进行判断的字符串,subString为要在strObj查找的子字符串,startIndex是可选的,表示查找的开始位置(基于0的索引),如果startIndex省略,则从strObj末尾处查找,如果startIndex小于0,则从0开始,如果startIndex大于最大索引,则从最大索引处开始。该方法自右向左查找,返回subString在strObj中最后出现的位置,如果没有找到,返回-1。
八、在Unicode值和字符串中的字符间转换
问题:
获得一个字符的Unicode编码值,反之亦然。
解决方案:
要获得字符的Unicode编码,可以使用string.charCodeAt(index)方法,其定义为:
strObj.charCodeAt(index)
index为指定字符在strObj对象中的位置(基于0的索引),返回值为0与65535之间的16位整数。例如:
var strObj = "ABCDEFG"; var code = strObj.charCodeAt(2); // Unicode value of character 'C' is 67
如果index指定的索引处没有字符,则返回值为NaN。
要将Unicode编码转换为一个字符,使用String.fromCharCode()方法,注意它是String对象的一个"静态方法",也就是说在使用前不需要创建字符串实例:
String.fromCharCode(c1, c2, ...)
它接受0个或多个整数,返回一个字符串,该字符串包含了各参数指定的字符,例如:
var str = String.fromCharCode(72, 101, 108, 108, 111); // str == "Hello"
讨论:
Unicode包含了这个世界上很多书写语言的字符集,但别因为Unicode包含一个字符就期望这个字符能够在警告对话框、文本框或页面呈现时正常显示。如果字符集不可用,在页面将显示为问号或其它符号。一台典型的北美的计算机将不能在屏幕上显示中文字符,除非中文的字符集及其字体已经安装。
以上就是JavaScript中的字符串操作的内容,更多相关内容请关注PHP中文网(m.sbmmt.com)!