在执行此操作时遇到问题。Javascript使用循环返回字符串中每个单词的第一个字母的位置
因此,例如这里是我的字符串。 var str =“你好,你今天好吗?”;
我该如何处理这个字符串来使用循环返回每个单词的第一个字母的位置?
在执行此操作时遇到问题。Javascript使用循环返回字符串中每个单词的第一个字母的位置
因此,例如这里是我的字符串。 var str =“你好,你今天好吗?”;
我该如何处理这个字符串来使用循环返回每个单词的第一个字母的位置?
这会给你不那么复杂的代码和一个循环的结果
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;
}
您可以使用正则表达式replace
传递一个函数,而不是替换字符串,这将要求每个匹配功能:
str.replace(/[^ ]+/g, function(match, pos) {
console.log("Word " + match + " starts at position " + pos);
});
的正则表达式的含义是:
[^ ]
:任何排除空间+
:一次或多次换句话说,函数将被称为非空间序列。当然,你可以用不同的方式定义你认为的“单词”。
如果问题已经被询问并回答,您应该在询问之前搜索问题。 Get first letter of each word in a string, in Javascript
下面是两个回路一个解决方案,我希望这是足够接近;)
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]))
}
非常感谢! 想了好几个小时后,这个工作非常有帮助。阅读代码比编写代码容易得多,希望我可以继续练习它并提出它更容易和更容易! – draikonz 2015-03-19 07:29:01
不客气。 你应该明确地看看@Avishek的答案。 它比我的方式更美丽,尽管我认为它很难阅读:D – 2015-03-19 07:38:16
编辑更好的代码可读性。谢谢@安德斯安德森 – Avishek 2015-03-19 07:44:46