我编写了一个c#代码来读取括号“()”
中的字符串值 string s = "Hello (World) This is (Working)";
int i = 0;
while ((i = s.IndexOf('(', i)) != -1)
{
int stop = s.Substring(i+1).IndexOf(')');
string output = s.Substring(i + 1, stop);
Console.WriteLine(output);
i++;
}
Console.ReadLine();
使用此代码我
世界工作
我想在JavaScript中实现这一点所以我尝试了这个
function myFunction()
{
var s = "Hello (World) This is (Working)";
var i = 0;
while ((i = s.indexOf('(', i)) != -1)
{
var stop = s.substring(i+1).indexOf(')');
var output = s.substring(i+1, stop);
document.write(output);
i++;
}
}
但它有不同的输出
ss(
我不擅长javaScript,请帮我找一个这个方法的解决方案我不想用正则表达式
答案 0 :(得分:4)
尽管名称相似,但实际上并没有使用等效方法(请注意第二个参数):
尝试substr
代替JavaScript - substr(int index, int length)
:
function myFunction()
{
var s = "Hello (World) This is (Working)";
var i = 0;
while ((i = s.indexOf('(', i)) != -1)
{
var stop = s.substr(i+1).indexOf(')');
var output = s.substr(i+1, stop);
document.write(output);
i++;
}
}
答案 1 :(得分:1)
对于简单的控制逻辑,最好使用转换器。
您可以尝试SharpKit将c#代码转换为javascript。它可以免费用于小型或开源项目。
答案 2 :(得分:0)
试试这个。这不是最好的代码,但它会按照你的要求行事:
var thestring = 'Hello (World) This is (Working)';
var words = thestring.match(/(\([A-Za-z]+\))/g);
words = words.join('-').replace(/[\(\)]/g,'').split('-');
<强>更新即可。 我没有读过“我不想使用正则表达式”的部分,但也许你应该这样做。我不太了解正则表达式,但我尽我所能,并尝试更多地了解这个......世界。 :|
答案 3 :(得分:0)
这就是你想要的?
function myFunction() {
var s = "Hello (World) This is (Working)";
var i = 0;
var outputs = [];
while ((i = s.indexOf('(', i)) != -1) {
var stop = s.indexOf(')', i);
outputs.push(s.slice(i + 1, stop));
i++;
}
document.write(outputs.join(' ')); // World Working
}
<强> Demo 强>
答案 4 :(得分:0)
我发现循环更易读。这是我的看法。
function myFunction() {
var s = "Hello (World) This is (Working)";
var output = false;
for (i = 0; i <= s.length; i++) {
if (s[i] == ')') {
if (i != s.length) document.write(' ');
output = false
}
if (output) document.write(s[i]);
if (s[i] == '(') output = true;
}
}