如何在Javascript中通过索引在数组中找到子字符串
How to find the substrings in Javascript by indeces in array
我是Javascript新手。我有字符串和数组的一些索引。
var string = "?str!ing."; //input string
var arr = [0, 4, 8]; // indices of the punctuation signs in the string
如何查找子字符串:
["?", "str", "!", "ing", "."]
如果您已经在arr
中有索引,这将用子字符串填充变量res
:
var res = [];
if(arr[0] > 0) res.push(string.substring(0, arr[0])); //only needed if the first index is not the start of the string and the first substring has to be added
for(var i = 0; i< arr.length; i++){
var index = arr[i];
res.push(string.substring(index,++index)); //add the puncutation sign
var next = arr[i+1] || string.length; //get the next index (or end of string)
if(index<next) res.push(string.substring(index, next)); //add the substring if length > 0
}
小提琴
也许另一种方法是在确定索引的同时构建res数组,但是如果你已经有了索引数组,上面的方法应该可以工作。
我相信这段代码会根据索引来打断句子。
var length = arr.length;
var responce = [];
for (var x = 0; x<length ; x++){
if(arr[x] == 0){
var z = string.slice(arr[x],arr[x]+1);
responce.push(z)
}else{
var z = string.slice(arr[x-1]+1,arr[x]);
responce.push(z)
var z = string.slice(arr[x],arr[x]+1);
responce.push(z)
}
if((x == length-1) && (arr[x] < string.length-1)){
var z = string.slice(arr[x]+1,string.length);
responce.push(z)
}
}
console.log(responce);
快速的解决方案是有一个预定义的分隔符列表:
splitString = function(string, splitters) {
var list = [string];
for(var i=0, len=splitters.length; i<len; i++) {
traverseList(list, splitters[i], 0);
}
return flatten(list);
}
traverseList = function(list, splitter, index) {
if(list[index]) {
if((list.constructor !== String) && (list[index].constructor === String))
(list[index] != list[index].split(splitter)) ? list[index] = list[index].split(splitter) : null;
(list[index].constructor === Array) ? traverseList(list[index], splitter, 0) : null;
(list.constructor === Array) ? traverseList(list, splitter, index+1) : null;
}
}
flatten = function(arr) {
return arr.reduce(function(acc, val) {
return acc.concat(val.constructor === Array ? flatten(val) : val);
},[]);
}
var stringToSplit = "?str!ing.";
var splitList = ["?", "!", "."];
splitString(stringToSplit, splitList);
上面例子的回报:(str, ing)
相关文章:
- 将JSON转换为typescript中的字符串数组
- 在Javascript中将一个值和字符串数组转换为if语句
- 如何将正则表达式包含到字符串数组中
- JavaScript:将字符串数组转换为文本区域
- Knockout中的字符串数组
- 拆分字符串数组(JavaScript)后未定义
- 使用Javascript获取两个字符串之间的字符串数组
- 打印从Spring MVC Controller发送的字符串数组只显示“;toJSON”;在javascript中
- 将一个字符串数组解析为一个新的数组javascript
- AngularJS - 从字符串数组中连续更改文本
- 使用字符串数组中的字符填充 HTML 表
- 如何在 Javascript 中将字符串数组列表插入到表行中
- 创建二维字符串数组
- 如何从字符串数组中获取子字符串数组
- 如何将字符串数组转换为简单数组
- 按字母顺序、数字顺序和特殊字符对字符串数组进行排序
- 如何从字符串数组中获得8个随机唯一元素
- json_encode($myVar);正在给出地图,我想要一个字符串数组
- 函数,返回javascript中两个字符串数组的差值
- Javascript字符串数组转换为用逗号分隔的多个字符串