gpt4 book ai didi

javascript - 从 javascript 中的字符串中提取数据的更有效方法?

转载 作者:行者123 更新时间:2023-11-30 08:26:06 25 4
gpt4 key购买 nike

我有来自聊天客户端的消息,我想解析 # 符号,然后提取它后面的 1-3 位数字加上数字后面的字母。由于我不知道数字的长度是 1 位、2 位还是 3 位,所以我将每个数字都作为整数进行测试,然后分配变量。我想出了以下代码,但我的编程技能非常基础...

var test = 'it doesnt matter how long the message is I only need #222c';
var QuID = '';
var Qans = '';
var regInteger = /^\d+$/;


//this function checks to see if a charactor is an integer
function isInteger( str ) {
return regInteger.test( str );
}

var IDloc = test.indexOf('#') + 1;
var IDloc2 = test.indexOf('#') + 2
console.log(IDloc);

//This is a brute force method to test if there is a 1-3 digit number and assigning the question number and question answer into variables. Sloppy but it's duct tape and wire programming my friend!
if(isInteger(test.substring(IDloc, IDloc2))) {
QuID = (test.substring(IDloc, IDloc2));
Qans = (test.substring((IDloc + 1), (IDloc2 + 1)));
if (isInteger(test.substring((IDloc +1), (IDloc2 + 1)))) {
QuID = (test.substring(IDloc, (IDloc2 + 1)));
Qans = (test.substring((IDloc + 2), (IDloc2+ 3)));
if (isInteger(test.substring((IDloc + 2), (IDloc2 + 2)))) {
QuID = (test.substring(IDloc, (IDloc2 + 2)));
Qans = (test.substring((IDloc + 3), (IDloc2 + 4)));
}
}

console.log( QuID );
console.log( Qans );
} else {
console.log( 'Non Integer' );
}

有没有更有效的编码方式,因为我觉得这是一种蛮力方法。

最佳答案

var result = test.match(/#(\d{1,3})([a-zA-Z])/);
if (result) {
var numbers = result[1];
var character = result[2];
}

这会将 1-3 位数字(# 符号后)后跟一个字符(在 a-z 小写和大写范围内,如果您需要任何特殊字符,例如 äüß,则需要添加它们)提取到两个不同的捕获中组,然后将这些捕获组读入两个变量。请注意,这只会提取第一个匹配项。

关于javascript - 从 javascript 中的字符串中提取数据的更有效方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45402600/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com