javascript - 为什么在 .slice() 和连接的这个用例中混合引号时不需要加 1?
问题描述
在本教程中,“从旧部分制作新字符串”部分给出了将不需要的数据剪切为火车站名称的人类可读格式的任务。
eg
原始字符串:MAN675847583748sjt567654;Manchester Piccadilly
所需字符串:MAN: Manchester Piccadilly
const list = document.querySelector('.output ul');
list.innerHTML = '';
let stations = ['MAN675847583748sjt567654;Manchester Piccadilly',
'GNF576746573fhdg4737dh4;Greenfield',
'LIV5hg65hd737456236dch46dg4;Liverpool Lime Street',
'SYB4f65hf75f736463;Stalybridge',
'HUD5767ghtyfyr4536dh45dg45dg3;Huddersfield'];
for (let i = 0; i < stations.length; i++) {
let input = stations[i];
let code = input.slice(0,3);
let semiC = input.indexOf(';');
let name = input.slice(semiC + 1);
let result = code + ': ' + name;
let listItem = document.createElement('li');
listItem.textContent = result;
list.appendChild(listItem);
}
我的解决方案:
let stations = ['MAN675847583748sjt567654;Manchester Piccadilly',
'GNF576746573fhdg4737dh4;Greenfield',
'LIV5hg65hd737456236dch46dg4;Liverpool Lime Street',
'SYB4f65hf75f736463;Stalybridge',
'HUD5767ghtyfyr4536dh45dg45dg3;Huddersfield'];
for (let i = 0; i < stations.length; i++) {
let input = stations[i];
let stationAbbr = input.slice(0,3);
let semicolon = input.indexOf(';');
let stationName = input.slice(semicolon);
let station = stationAbbr + ': " + stationName;
let listItem = document.createElement('li');
listItem.textContent = station;
list.appendChild(listItem);
}
教程解决方案:
for (let i = 0; i < stations.length; i++) {
let input = stations[i];
let code = input.slice(0,3);
let semiC = input.indexOf(';');
let name = input.slice(semiC + 1);
let result = code + ': ' + name;
let listItem = document.createElement('li');
listItem.textContent = result;
list.appendChild(listItem);
}
本教程的构造在result
功能上等同于我的station
.
但是,正如您所看到的,我在声明时犯了混合单引号/双引号的错误station
。
这实际上产生了预期的结果,但修复引号会在输出中间添加一个分号。
为什么在这里混合引号消除了+ 1
在stationName
and中指定的需要name
?
解决方案
转到教程,您的代码块不是有效的 javascript 并且无法正常工作。您可以通过在控制台中粘贴代码来确认这一点。以 ' 开头的字符串要求它以 ' 结尾。使用 " 并没有表示它结束字符串,而是成为它的一部分。
当代码无法执行时,教程输入窗口似乎不会提醒您任何错误或更新输出。我可以通过选择显示解决方案然后在其上粘贴您的代码来复制您的问题。正确的答案仍然存在,但由于解决方案代码。
需要 + 1 来选择分号后面的字符,这将是站名的开头。
推荐阅读
- javascript - 如何使用来自单独的 JSS 样式组件的 React Context 值?
- ios - 如何强制安装不兼容的 pod?
- python-3.x - 如何从包含空格的 txt 中捕获元素?
- shell - bash 按单词和 concat 分组
- dataweave - 在 mule 4 中带长度检查的 Leftpad Zeros
- php - php-7 中的“2020 年 1 月第一个星期三”与“2020 年 1 月的第一个星期三”
- docker - 使用 Docker,我如何绑定挂载并保留容器文件?
- r - 在 R 中,如何按行使用 argmax 函数并计算变量数?
- amcharts - 如何在 DateAxis AxisLabel 文本适配器中检索正确的日期?
- python - 我有这个 TypeError: unsupported operand type(s) for /: 'NoneType' and 'NoneType' in Django code