我有一个字符串:
lorem ipsum !bang #hash #hash2 ^caret word @at sym
我试图从各种字符开始拉出单词 - 有时它们可以有一个空格,每种类型可以有多个。所以我想将这个字符串转换为一组值,例如:
text: "lorem ipsum"
!: "bang"
#: ["hash", "hash2"]
^: "caret word"
@: "at sym"
它总是以纯字符串开头。到目前为止,我已经尝试了一些东西,但不能完全理解。例如,我尝试将字符串拆分为一个单词数组,除了空格之外还有哪些作用:
var list = str.split(' ');
var hashes=[];
$.each(list,function(i,val){
if(list[i].indexOf('#') == 0){
hashes.push(tagslistarr[i]);
}
});
//Result: [hash, hash2]
所以这有效,但显然有些人可以有空格。它还意味着为每个^ # ! @
重复该代码。
我也尝试过:
str.substring(str.lastIndexOf("^")+1,str.lastIndexOf("@"));
哪个会正确返回caret word
空格,但未考虑所有字符。我尝试用数组替换“@”,但没有运气。
关于如何实现这一目标的任何想法?
非常感谢
编辑:只是注意到各个部分可以按任何顺序排列,也可以是它们的数量,并且它们并非都必须存在。可以是ab !a #b #c #d ^f b a @a
或cd ^x y !a
答案 0 :(得分:2)
请看下面的JS代码。希望它能帮助你实现目标。
"use strict";
var moduleA = require("./moduleA");
new moduleA.Car();
// equivalent to the above - import everything under myModuleName
var myModuleName = require('./moduleA');
new myModuleName.Car();
// import only the Car class
var moduleA_1 = require('./moduleA');
new moduleA_1.Car();
// import only the Car class and alias it as MyCar
var moduleA_2 = require('./moduleA');
new moduleA_2.Car();
答案 1 :(得分:0)
各种类型的数据,即没有特殊字符,然后是#,然后是^,那么@总是处于相同的顺序吗?
lorem ipsum!bang #hash #hash2 ^ caret word @at sym
如果是这样,你可以为每种类型的数据编写一个提取函数,它使用边界字符来检测单词部分,例如,如果你想要发出爆炸,你检测到!的位置,然后检测位置#。然后,您可以知道数据的边界位置,提取数据并清理以获取单词。对于#部分,你从#的位置到^的位置,提取部分并清理以获得单词等。