读取括号内的字符()

时间:2012-05-24 03:32:21

标签: c# javascript

我编写了一个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,请帮我找一个这个方法的解决方案我不想用正则表达式

5 个答案:

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

jsFiddle

相关问题