J'ai récemment participé à plusieurs tests écrits pour le recrutement de stagiaires front-end et j'ai découvert que de nombreuses questions de test écrit testeront le traitement des chaînes, telles que les questions de test écrit de Qunar.com, les questions de test écrit de Taobao, etc. Si vous passez souvent des examens écrits ou si vous y êtes allé, je pense que vous constaterez, comme moi, que le traitement des chaînes est l'un des types de questions les plus courants dans le processus de recrutement initial.
Ces questions ont une caractéristique. Considérez-la du point de vue de l'examinateur. Elle ne teste pas si vous la connaissez, mais si vous pouvez l'utiliser de manière plus concise sans emprunter le manuel XX ou le guide XX ou Baidu et Google. chemin.
Malheureusement, de nombreux développeurs, bien sûr j'en fais partie, ne se souviennent pas clairement de leur utilisation pour de nombreuses fonctions de traitement de chaînes fréquemment utilisées et doivent toujours se tourner vers le manuel XX ou le guide XX ou vers Baidu Google.
Le résultat est que ces connaissances de base très critiques ne sont pas assez solides. Lorsque vous rencontrez ces questions, vous devez utiliser des boucles for imbriquées de niveau N pour les parcourir une par une.
C'est un signal. Lorsque vous constatez que vous utilisez trop de boucles for lorsque vous répondez à ce type de questions, faites attention. Il est très probable que vous ayez mal écrit. Ne sous-estimez pas ces choses, elles peuvent jouer un rôle important dans la recherche d'un emploi et dans l'évolution quotidienne.
D’accord, ne parlons plus, résumons-les un par un. Il est inévitable qu'il y ait des omissions. Si vous les trouvez, n'hésitez pas à les ajouter ou à envoyer un message privé.
1. Conversion de chaîne
La conversion de chaîne est l'exigence et le travail les plus fondamentaux. Vous pouvez convertir n'importe quel type de données en chaîne. Vous pouvez utiliser l'une des trois méthodes suivantes :
var num= 19; // 19 var myStr = num.toString(); // "19"
Vous pouvez également faire ceci :
var num= 19; // 19 var myStr = String(num); // "19"
Ou, encore plus simple :
var num= 19; // 19 var myStr = "" +num; // "19"
2. Segmentation des chaînes
Le fractionnement de chaînes consiste à diviser une chaîne en plusieurs chaînes. JavaScript nous offre une fonction très pratique, telle que :
var myStr = "I,Love,You,Do,you,love,me"; var substrArray = myStr .split(","); // ["I", "Love", "You", "Do", "you", "love", "me"]; var arrayLimited = myStr .split(",", 3); // ["I", "Love", "You"];
Le deuxième paramètre de split() indique la longueur maximale du tableau de chaînes renvoyé.
3. Obtenez la longueur de la chaîne
La longueur des chaînes est souvent utilisée dans le développement. C'est très simple comme suit :
var myStr = "I,Love,You,Do,you,love,me"; var myStrLength = myStr.length; //25
4. Sous-chaîne de requête
Beaucoup de gens oublieront les méthodes intégrées de JavaScript, ou oublieront leur utilisation spécifique, ce qui les obligera à imbriquer une boucle for lors de la réponse aux questions.
La première fonction : indexOf(), elle recherche depuis le début de la chaîne et renvoie les coordonnées correspondantes si elle est trouvée. Si elle n'est pas trouvée, elle renvoie -1. Comme suit :
var myStr = "I,Love,you,Do,you,love,me"; var index = myStr.indexOf("you"); // 7 ,基于0开始,找不到返回-1
La deuxième fonction : lastIndexOf(), elle recherche à partir de la fin de la chaîne et renvoie les coordonnées correspondantes si elle est trouvée. Si elle n'est pas trouvée, elle renvoie -1. Comme suit :
var myStr = "I,Love,you,Do,you,love,me"; var index = myStr.lastIndexOf("you"); // 14
Les deux fonctions ci-dessus reçoivent également un deuxième paramètre optionnel, indiquant la position de départ de la recherche.
5. Remplacement de chaîne
Le simple fait de trouver une chaîne ne devrait pas s'arrêter. Dans les questions générales, il vous sera souvent demandé de la rechercher et de la remplacer par votre propre chaîne, par exemple :
var myStr = "I,love,you,Do,you,love,me"; var replacedStr = myStr.replace("love","hate");//"I,hate,you,Do,you,love,me"
Par défaut, seul le premier trouvé est remplacé. Si vous souhaitez le remplacer globalement, vous devez mettre un drapeau global régulier, tel que :
var myStr = "I,love,you,Do,you,love,me"; var replacedStr = myStr.replace(/love/g,"hate"); //"I,hate,you,Do,you,hate,me"
Pour des explications plus détaillées, veuillez vous référer à : http://www.w3school.com.cn/jsref/jsref_replace.asp
6. Rechercher le caractère à une position donnée ou sa valeur d'encodage de caractère
Pour retrouver un personnage à une position donnée, vous pouvez utiliser la fonction suivante :
var myStr = "I,love,you,Do,you,love,me"; var theChar = myStr.charAt(8);// "o",同样从0开始
De même, l'une de ses fonctions sœurs est de trouver la valeur d'encodage des caractères de la position correspondante, telle que :
var myStr = "I,love,you,Do,you,love,me"; var theChar = myStr.charCodeAt(8); //111
7. Concaténation de chaînes
L'opération de concaténation de chaînes peut être aussi simple que d'utiliser un opérateur d'addition, tel que :
var str1 = "I,love,you!"; var str2 = "Do,you,love,me?"; var str = str1 + str2 + "Yes!";//"I,love,you!Do,you,love,me?Yes!"
De même, JavaScript est également livré avec des fonctions associées, telles que :
var str1 = "I,love,you!"; var str2 = "Do,you,love,me?"; var str = str1.concat(str2);//"I,love,you!Do,you,love,me?"
La fonction concat() peut avoir plusieurs paramètres, transmettre plusieurs chaînes et épisser plusieurs chaînes.
8. Coupe et extraction des cordes
Il existe trois façons d'extraire et de couper des ficelles, telles que :
La première méthode consiste à utiliser slice() :
var myStr = "I,love,you,Do,you,love,me"; var subStr = myStr.slice(1,5);//",lov"
Deuxièmement, utilisez substring() :
var myStr = "I,love,you,Do,you,love,me"; var subStr = myStr.substring(1,5); //",lov"
La troisième méthode consiste à utiliser substr() :
var myStr = "I,love,you,Do,you,love,me"; var subStr = myStr.substr(1,5); //",love"
Différent des première et deuxième méthodes, le deuxième paramètre de substr() représente la longueur maximale de la chaîne interceptée, comme indiqué dans les résultats ci-dessus.
9. Conversion de cas de chaîne
Les fonctions couramment utilisées pour la conversion en chaînes majuscules ou minuscules sont les suivantes :
var myStr = "I,love,you,Do,you,love,me"; var lowCaseStr = myStr.toLowerCase();//"i,love,you,do,you,love,me"; var upCaseStr = myStr.toUpperCase();//"I,LOVE,YOU,DO,YOU,LOVE,ME"
10. Correspondance de chaînes
La correspondance de chaînes peut nécessiter que vous ayez une certaine compréhension des expressions régulières. Jetons d'abord un coup d'œil à la fonction match() :
var myStr = "I,love,you,Do,you,love,me"; var pattern = /love/; var result = myStr.match(pattern);//["love"] console.log(result .index);//2 console.log(result.input );//I,love,you,Do,you,love,me
如你所见,match()函数在字符串上调用,并且接受一个正则的参数。来看看第二个例子,使用exec()函数:
var myStr = "I,love,you,Do,you,love,me"; var pattern = /love/; var result = pattern .exec(myStr);//["love"] console.log(result .index);//2 console.log(result.input );//I,love,you,Do,you,love,me
简单吧,仅仅是把正则和字符串换了个位置,即exec()函数是在正则上调用,传递字符串的参数。对于上面两个方法,匹配的结果都是返回第一个匹配成功的字符串,如果匹配失败则返回null.
再来看一个类似的方法search(),如:
var myStr = "I,love,you,Do,you,love,me"; var pattern = /love/; var result = myStr.search(pattern);//2
仅返回查到的匹配的下标,如果匹配失败则返回-1.
11、字符串比较
比较两个字符串,比较是规则是按照字母表顺序比较的,如:
var myStr = "chicken"; var myStrTwo = "egg"; var first = myStr.localeCompare(myStrTwo); // -1 first = myStr.localeCompare("chicken"); // 0 first = myStr.localeCompare("apple"); // 1
12、举例
最后我们来看一道前端笔试题,去哪儿网的,相信很多孩子都做到过这个题了。题目:写一个getSuffix函数,用于获得输入参数的后缀名,例如输入abcd.txt,返回txt。附上我的答案:
function getSuffix(file){ return file.slice(file.lastIndexOf(".") + 1,file.length); }
结束语
相信JavaScript中字符串操作的函数应该不止这几个,但是上面列的这些应该都是非常常用的。如果有哪些需要补充的,欢迎补充!希望看到这些以后,再面对字符串的笔试面试题你能非常从容的面对。