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

似たような名前にもかかわらず、これらは実際には同等のメソッドを使用していません(2番目の引数に注意してください)。

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 に答える