1

我已经编写了 ac# 代码来读取括号“()”内的字符串值

 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,请帮我在这种方法中找到解决方案我不想使用正则表达式

4

5 回答 5

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++;
    }
}
于 2012-05-24T03:45:33.030 回答
1

对于简单的控制逻辑,最好使用转换器。

您可以尝试使用 SharpKit将 c# 代码转换为 javascript。它可以免费用于小型或开源项目。

于 2012-05-24T03:35:08.557 回答
0

尝试这个。这不是最好的代码,但它会按照你的要求做:

var thestring = 'Hello (World) This is (Working)';
var words = thestring.match(/(\([A-Za-z]+\))/g);
words = words.join('-').replace(/[\(\)]/g,'').split('-');

更新。我没有读过“我不想使用正则表达式”的部分,但也许你应该读。我不太了解正则表达式,但我尽我所能并尝试更多地了解那个……世界。:|

于 2012-05-24T03:44:07.540 回答
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
}

演示

于 2012-05-24T03:48:23.753 回答
0

我发现 for 循环更具可读性。这是我的看法。

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;
    }
}

jsFiddle

于 2012-05-24T04:06:06.000 回答