无法提供代码执行此操作。
所以例如这里是我的字符串。 var str ="你好,今天你好吗?&#34 ;;
如何操作此字符串以使用循环返回每个单词的第一个字母的位置?
答案 0 :(得分:1)
这将为您提供不太复杂的代码和单个循环的结果
function foo(str) {
var pos = [];
var words = str.split(' ');
pos.push(1);
var prevWordPos;
for (var i = 1; i < words.length; i++) {
prevWordPos = pos[i - 1] + words[i - 1].length;
pos.push((str.indexOf(words[i], prevWordPos) + 1));
}
return pos;
}
&#13;
答案 1 :(得分:0)
最简单的方法是搜索正则表达式\b\w
并为每场比赛收集 match.start()
match.index
。在那里匹配时循环。
答案 2 :(得分:0)
您可以使用正则表达式replace
传递函数而不是替换字符串,这将为每个匹配调用函数:
str.replace(/[^ ]+/g, function(match, pos) {
console.log("Word " + match + " starts at position " + pos);
});
正则表达式的意思是:
[^ ]
:除空格外的任何内容+
:一次或多次换句话说,函数将使用非空格序列调用。当然,你可以定义你认为是什么&#34; word&#34;不同。
答案 3 :(得分:0)
在询问问题之前,您应该先搜索一个问题,以防问题已经被问及并得到解答。 Get first letter of each word in a string, in Javascript
答案 4 :(得分:0)
这是一个有两个循环的解决方案,我希望它足够接近;)
var starts = [];
var str = "How are you doing today?";
//var count = 0;
var orgStr = str;
while (str.indexOf(" ") > 0) {
if (starts.length > 0) {
starts.push(starts[starts.length - 1] + str.indexOf(" ") +1);
} else {
starts.push(1);
starts.push(str.indexOf(" ") +2);
//alert(str);
}
str = str.substring(str.indexOf(" ") + 1);
}
for (var i = 0; i < starts.length; i++) {
alert(starts[i] + ": " + orgStr.substring(starts[i]-1,starts[i]))
}
&#13;