Javascript使用循环返回字符串中每个单词的第一个字母的位置

时间:2015-03-19 06:52:46

标签: javascript string loops

无法提供代码执行此操作。

所以例如这里是我的字符串。     var str ="你好,今天你好吗?&#34 ;;

如何操作此字符串以使用循环返回每个单词的第一个字母的位置?

5 个答案:

答案 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;
&#13;
&#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; G&#34;选项:不仅是第一场比赛,而是每场比赛

换句话说,函数将使用非空格序列调用。当然,你可以定义你认为是什么&#34; word&#34;不同。

答案 3 :(得分:0)

在询问问题之前,您应该先搜索一个问题,以防问题已经被问及并得到解答。 Get first letter of each word in a string, in Javascript

答案 4 :(得分:0)

这是一个有两个循环的解决方案,我希望它足够接近;)

&#13;
&#13;
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;
&#13;
&#13;