用javascript对字符串进行切片是不起作用的



我在这个函数中所做的只是:

function parse_msg(chatstr) {
let i = chatstr.indexOf(',');
var msg = chatstr.slice(i+1);
return msg;
}

解析一条消息,该消息首先以username开头,然后是",然后是实际消息。但当我打印结果时,我又收到了完整的消息!那么我做错了什么?

所以函数是好的,但我的代码有问题:

在这个我调用输入:

document.querySelector('#select_channels').onchange = function() {
localStorage.setItem('channel',this.value);
let x = document.getElementById('chat_msg_head');
x.innerHTML = '#' + this.value;
// get all the chats for this channel
const request = new XMLHttpRequest();
request.open('POST', '/chats');
// Callback function for when request completes
request.onload = () => {
// Extract JSON data from request
const data = JSON.parse(request.responseText);
// Update the result div
if (data.success) {
chats = data.chats;
if (chats) {
alert(`chats is ${chats}`);
let length = chats.length;
for (i =0 ;i <length; i++)
{
let user = parse_user(chats[i]);
let msg = parse_msg(chats[i]);
alert(` user is ${user} and message is ${msg}`);
//fill_in_recent(user,msg);
}

警报${msg}也打印完整的消息,包括user和",",而不是它应该打印的实际消息。

我的具体警报是:"用户是rajasaid,消息是rajasead,嗨,这是第一条内置的消息">

您可以使用分割代替切片

function parse_msg(chatstr) {
var msg = chatstr.split(',');
return msg;
}
console.log(parse_msg('name,message'));

为什么不使用内置的String函数split?它根据给定的字符将字符串拆分为字符串数组。

let input = 'my_username,my_message';
function parseString (str) {
let result = str.split(','); // 
let username = result[0]; // Which is equal to "my_username"
let message = result[1]; // Which is equal to "my_message"
return message;
}
parseString(input);

最新更新