我正在使用javascript,但我正在寻找可能适用于多种语言的通用解决方案。
我想要一个运行时间超过预期的while循环。
例如(假设变量如上所述):
while (x != ">") {
i++;
tempStr += x;
x = text[i];
}
因此,上述代码的输出将tempStr
的最后一个字符设为">"
。
要记住的重要一点是,我不是简单地想做这样的事情:
while (x != ">") {
i++;
tempStr += x;
x = text[i];
}
tempStr += x;
以上只是一个例子,在条件为false之后运行while循环一个最后一个循环可能很方便。虽然我不能与你分享我的实际代码(出于法律原因),但要知道上述内容不会是我想到的应用程序的解决方案。
我可能无法做我想做的事情,如果有的话,请告诉我:)。
答案 0 :(得分:4)
while(condition || !extraLoopCondition) {
//The usual stuff
if(!condition) {
extraLoopCondition = true;
}
}
虽然它不是很有说服力,但它肯定会做你想要的事情
据推测,最后一个周期最后会condition
为假
答案 1 :(得分:1)
是的,do ... while()构造在大多数语言中。
http://www.php.net/manual/en/control-structures.do.while.php
<?php
$i = 0;
do {
echo $i;
} while ($i > 0);
?>
答案 2 :(得分:1)
从Mike的评论中,使用do循环:
var tempStr = '';
var x, i=0;
do {
x = text[i++];
tempStr += x;
} while (x != '>')
请注意,您可能应该有一个替代限制,以防止无限循环,以防 x 永远不是“&gt;”,例如
...
while (x != '>' && text[i])
或类似的。还测试通过索引访问字符串字符在所有浏览器中都有效,有些不允许它(较旧的IE)因此可能更好用:
x = text.substr(i++, 1);
或
x = text.charAt(i++);
答案 3 :(得分:1)
你说你之后不想要代码......就像在
中一样while (x != ">") {
i++;
tempStr += x;
x = text[i];
}
tempStr += x;
但你也说do{}while
不起作用,因为条件必须验证..但是..
如果必须验证条件意味着你将在循环之外的代码..但之前..你的样本只有在代码是这样的时才有效
x = text[i=0];
while (x != ">") {
i++;
tempStr += x;
x = text[i];
}
所以我真的没有看到在循环之外有代码的问题..你不能避免它,除非你做一些非正统的代码,如
for(x = text[i=0];(tempStr = tempStr +x).substring(tempStr.length-1) != ">";x = text[i])
i++
但这是最糟糕的(最痛苦的)解决方案..无论出现什么问题...... 任何方式..当我做解析或字符串操作,我需要追加最后一个字符 通常我的代码都是这样的
for(var i=0;text.length>0;i++)
{
var x = text[i]; //get the char
tempStr += x;//do somthing..like..append
if(x==">")//is the last one admissible
break;
}
答案 4 :(得分:0)
实际上,我只想到了一些东西。但是还没有测试过。 (esdebon也建议这个,我在发布之前没看到它)
if (x != ">") {
do {
i++;
tempStr += x;
x = text[i];
}
while (x != ">")
}
答案 5 :(得分:0)
这是否符合您的要求?
if( x != ">" ) tempStr += x;
while (x != ">") {
x = text[++i];
tempStr += x;
}
如果tempStr
不等于>
,这会将x
的最后一个字符保留为'>'
。