当前位置: 首页 > 知识库问答 >
问题:

Javascript,将一根绳子分成4段,其余的作为一个大块

颛孙镜
2023-03-14

我正在为某些内容构建一个Javascript聊天机器人,我遇到了一个问题:
我使用string.split()来标记我的输入,如下所示:
令牌=消息.split(“ ”);

现在我的问题是,我需要4个标记来生成命令,1个标记来包含消息。当我这样做时:!finbot msg testuser 12345您好,先生,这是一条测试消息

这些是我得到的标记:[“!finbot”,“msg”,“testuser”,“12345”,“Hello”,“sir”,“this”,“is”,“a”,“测试”,“message”]

但是,怎么才能让它变成这样:< code>["!finbot "," msg "," testuser "," 12345 ","您好先生,这是一条测试消息"]

我之所以要这样做,是因为第一个令牌(token[0])是调用,第二个( )是命令,第三个( token[2])是用户,第四个是密码(因为它是受密码保护的消息……只是为了好玩),第五个( token[4]现在,它只会发送Hello,因为我只使用第五个令牌
我不能像message=token[4]token=5]那样的原因等是因为消息不总是精确的3个单词,或者不完全是4个单词等。

我希望我给了你足够的信息来帮助我。如果你们知道答案(或者知道更好的方法),请告诉我。

谢谢


共有3个答案

蒋健
2023-03-14

如果您可以使用es6,您可以:

let  [c1, c2, c3, c4, ...rest] = input.split (" ");
let msg = rest.join (" ");
杜君浩
2023-03-14

我可能会像您一样从字符串开始,并对其进行标记:

const myInput = string.split(" "):

如果您使用的是JS ES6,您应该能够执行以下操作:

const [call, command, userName, password, ...messageTokens] = myInput;
const message = messageTokens.join(" ");

但是,如果您无权访问扩展运算符,您可以这样做(只是更冗长):

const call = myInput.shift();
const command = myInput.shift();
const userName = myInput.shift();
const password = myInput.shift();
const message = myInput.join(" ");

如果您再次需要它们作为一个数组,现在您只需连接这些部分:

const output = [call, command, userName, password, message];
龙承德
2023-03-14
匿名用户

使用< code>String.split的< code>limit参数:

tokens = message.split(" ", 4);

从那里,你只需要从字符串中获取信息。将这个答案重用到它的< code > n index()函数中,您可以获得第四次出现的空格字符的索引,并获取它后面的内容。

var message = message.substring(nthIndex(message, ' ', 4))

或者,如果您需要在令牌数组中使用它:

tokens[4] = message.substring(nthIndex(message, ' ', 4))

 类似资料:
  • Oracle Java社区网站上的一篇文章给出了以下方法作为示例(对于JPA转换器,但我想这与此无关): 将字符串y转换为字符串val有什么用?这样做有正当理由吗? 原创文章:JPA中的新功能

  • 本文向大家介绍一根绳子,随机截成3段,可以组成一个三角形的概率有多大相关面试题,主要包含被问及一根绳子,随机截成3段,可以组成一个三角形的概率有多大时的应答技巧和注意事项,需要的朋友参考一下 参考回答: 设绳子长为a,折成三段的长度为x,y,a-x-y从而得到,满足这三个约束条件在平面直角坐标系中的可行域为一个直角三角形,面积为。而构成三角形的条件,任意两边和大于第三边的条件x+y>a-x-y,a

  • 我有一个问题,在这个例子中简化了。考虑这个熊猫数据帧,df_a: 我想通过将数量相加到一个新的数据框中,并创建一个新的类似于“arange”的索引来对这个数据框进行分组。这应该是我想要的结果: 但是我的努力创建了一个系列(我希望一个数据帧作为结果): 或者基于id列创建新索引: 我还尝试传递index参数,但这也不起作用: 有人对此有一个优雅的解决方案吗?

  • 问题内容: 我有一个表字段,其中包含用户的姓氏和名字。是否有可能分裂成那些2场,? 所有记录的格式均为“名字的姓氏”(不带引号,中间还有空格)。 问题答案: 不幸的是,MySQL没有分割字符串功能。但是,您可以为此创建一个用户定义的函数,例如以下文章中描述的函数: Federico Cargnelutti撰写的MySQL Split String Function 使用该功能: 您将可以按照以下方

  • 假设我有两个 NumPy 数组 注意:(中的值没有以任何方式排序。我选择这个例子是为了更好地说明这个例子)(这只是和的两个例子。和的值可以是任意多个不同的数字,可以有任意不同的数字,但是中的值总是和中的值一样多) 我想根据中的值有效地将数组拆分为子数组。 我想要的输出是 假设 从零开始并且没有排序而是分组,最有效的方法是什么? 注意:这个问题是这个问题的未排序版本:根据另一个数组的值(按升序排序)

  • 问题内容: 将列表基于任意数量的索引分成多个部分的最佳方法是什么?例如给出下面的代码 返回这样的东西 如果没有索引,则应返回整个列表。 问题答案: 这是我能想到的最简单,最pythonic的解决方案: 如果输入很大,则迭代器解决方案应该更方便: 当然,这是一个非常懒惰的家伙解决方案(如果您不介意获取数组而不是列表,但是无论如何,您始终可以将它们还原为列表):