--- title: 文本处理 — JavaScript中的字符串 slug: Learn/JavaScript/First_steps/Strings tags: - JavaScript - Join - 初学者 - 字符串 - 指南 - 文章 - 脚本编写 translation_of: Learn/JavaScript/First_steps/Strings ---
接下来,我们将把注意力转向文本片段——也就是编程中所说的字符串。在本文中,我们将了解在学习JavaScript时,您应该了解的关于字符串的所有常见事项,例如创建字符串、在字符串中转义引号,和连接字符串。
| 预备知识: | 基本的计算机读写能力,对HTML和CSS的基本理解,对JavaScript的理解。 |
|---|---|
| 目标: | 要熟悉JavaScript中字符串的基本知识。 |
语言对人类非常重要——它们是我们交流的重要组成部分。由于Web是一种主要基于文本的媒介,旨在让人们进行交流和分享信息,因此对我们来说,掌握它所出现的单词是很有用的。{{glossary("HTML")}}为我们的文本提供了结构和意义, {{glossary("CSS")}} 允许我们精确地设计它的样式,JavaScript包含许多操作字符串的特性,创建定制的欢迎消息,在需要时显示正确的文本标签,将术语排序到所需的顺序,等等。
到目前为止,我们在课程中展示的所有程序都涉及到一些字符串操作。
字符串与数字的处理方式第一眼看上去十分相似,但是当您深入挖掘时,您将会看到一些显著的差异。让我们首先在一个控制台输入一些基本的行来熟悉一下。
我们在下面提供了一个(您也可以在一个单独的选项卡或窗口中打开这个控制台,或者如果您愿意使用浏览器开发人员控制台)。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>JavaScript console</title>
<style>
* {
box-sizing: border-box;
}
html {
background-color: #0C323D;
color: #809089;
font-family: monospace;
}
body {
max-width: 700px;
}
p {
margin: 0;
width: 1%;
padding: 0 1%;
font-size: 16px;
line-height: 1.5;
float: left;
}
.input p {
margin-right: 1%;
}
.output p {
width: 100%;
}
.input input {
width: 96%;
float: left;
border: none;
font-size: 16px;
line-height: 1.5;
font-family: monospace;
padding: 0;
background: #0C323D;
color: #809089;
}
div {
clear: both;
}
</style>
</head>
<body>
</body>
<script>
var geval = eval;
function createInput() {
var inputDiv = document.createElement('div');
var inputPara = document.createElement('p');
var inputForm = document.createElement('input');
inputDiv.setAttribute('class','input');
inputPara.textContent = '>';
inputDiv.appendChild(inputPara);
inputDiv.appendChild(inputForm);
document.body.appendChild(inputDiv);
inputForm.addEventListener('change', executeCode);
}
function executeCode(e) {
try {
var result = geval(e.target.value);
} catch(e) {
var result = 'error — ' + e.message;
}
var outputDiv = document.createElement('div');
var outputPara = document.createElement('p');
outputDiv.setAttribute('class','output');
outputPara.textContent = 'Result: ' + result;
outputDiv.appendChild(outputPara);
document.body.appendChild(outputDiv);
e.target.disabled = true;
e.target.parentNode.style.opacity = '0.5';
createInput()
}
createInput();
</script>
</html>
{{ EmbedLiveSample('Hidden_code', '100%', 300) }}
let string = 'The revolution will not be televised.'; string;就像我们处理数字一样,我们声明一个变量,用一个字符串值初始化它,然后返回值。这里惟一的区别是,在编写字符串时,我们需要在字符串上加上引号。
let badString = This is a test; let badString = 'This is a test; let badString = This is a test';这些行不起作用,因为没有引号的任何文本字符串都被假定为变量名、属性名、保留字或类似。如果浏览器不能找到它,那么将会引发语法错误(例如:"missing ; before statement")。
let badString = string; badString;
现在将 string 的值赋值给 badString,赋值之后,两个字符串的值相等。
let sgl = 'Single quotes.'; let dbl = "Double quotes"; sgl; dbl;
let badQuotes = 'What on earth?";
let sglDbl = 'Would you eat a "fish supper"?'; let dblSgl = "I'm feeling blue."; sglDbl; dblSgl;
let bigmouth = 'I've got no right to take my place...';这个指引将会让我们很好地进入下一个主题。
要修复我们之前的问题代码行,我们需要避免引号的问题。转义字符意味着我们对它们做一些事情,以确保它们被识别成文本,而不是代码的一部分。在JavaScript中,我们通过在字符之前放一个反斜杠来实现这一点。试试这个:
let bigmouth = 'I\'ve got no right to take my place...'; bigmouth;
这回正常了。你可以用别的方式来达到一样的目的, 例如. \", 除此之外有一些特殊的代码 。更多细节请参见转义符号。
let one = 'Hello, '; let two = 'how are you?'; let joined = one + two; joined;变量
joined 的值的结果,它包含的值为 "Hello, how are you?"。let multiple = one + one + one + one + two; multiple;
let response = one + 'I am fine — ' + two; response;
注意: 当您在您的代码中输入一个实际的字符串时,用单引号或双引号括起来,它被称为字符串文字。
让我们看一下在操作中使用的连接——这是本课程早些时候的一个例子:
<button>Press me</button>
const button = document.querySelector('button');
button.onclick = function() {
let name = prompt('What is your name?');
alert('Hello ' + name + ', nice to see you!');
}
{{ EmbedLiveSample('上下文中的串联', '100%', 50, "", "", "hide-codepen-jsfiddle") }}
这里我们使用的是第4行中的 {{domxref("window.prompt()", "window.prompt()")}} 函数, 它要求用户通过一个弹出对话框回答一个问题然后将他们输入的文本存储在一个给定的变量中 — 在这个例子中是就是 name 变量。然后,我们在第5行中使用 {{domxref("window.alert()","window.alert()")}} 函数来显示另一个弹出窗口,其中包含一个字符串,我们用两个字符串常量和name变量通过连接进行组合。
'Front ' + 242;您可能会认为这会抛出一个错误,但它运行得很好。
let myDate = '19' + '67'; typeof myDate;
let myString = '123'; let myNum = Number(myString); typeof myNum;
let myNum = 123; let myString = myNum.toString(); typeof myString;
Number() 来处理这个问题。我们在数字猜谜游戏中第54行就是这么做的。这就是JavaScript中所涉及的字符串的基本内容。在下一篇文章中,我们将在此基础上,研究JavaScript中字符串的一些内置方法,以及如何使用它们来操纵我们的字符串,使之成为我们想要的形式。
{{PreviousMenuNext("Learn/JavaScript/First_steps/Math", "Learn/JavaScript/First_steps/Useful_string_methods", "Learn/JavaScript/First_steps")}}