1

phonegap ビルドを使用して電話アプリを作成しているため、HTML5、CSS、および javascript/jQuery に制限されていますが、次のことを実現したいと考えています。

「John Smith」である可能性のあるユーザーから入力を取得し、その入力に基づいてファイルから特定の行を取得したいので、別のユーザーが同じ名前を入力すると、同じ結果が得られます。名前から音節と文字数を使用して名前などを生成するための記事をグーグルで見つけましたが、私がやりたいことを実際に行うものは何もないようでした。

また、ユーザー入力をハッシュして、ランダムに生成された名前でリモート データベースに格納することも計画しました。その後、ハッシュが再び表示された場合は同じ名前を使用しますが、デバイス上のローカルなものは、読み込み時間を短縮するのに役立ちます等

ユーザーの入力に基づいてランダムな名前を生成する最良の方法は何ですか? どんな助けでも大歓迎です、ありがとう!

私の name-list.txt は次のようになります。

cup
annihilator
bobby
val
halen
chupa'clark'bra
hawii
mushinator
release
4

2 に答える 2

0

私はこれのために独自の関数を書くことになりました。そのようなゲットーですが、それは仕事をします。うまくいけば、これは他の誰かに役立つでしょう:P

function generateName(name) {
        if(name != null) {
            // prepare the variables
            var sum = 0;
            var total = 0;
            var points = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26];

            // get the string
            var string = name.replace(/[^a-zA-Z]/g, "");
            if(string.length > 50) {
                string = string.substring(0,50);
            }

            // tally up the points of the letters
            for(var i = 0; i < string.length; i++ ) {
                var letter = string.charAt(i).toUpperCase();
                var letterIndex = letter.charCodeAt(0) - 65;
                sum += points[letterIndex];
            }

            // make the number bigger
            if(sum % 2 === 0) {
                if(sum < 100) {
                    total = parseInt(Math.pow(sum, (sum)));
                }
                else 
                {
                    total = parseInt(Math.pow(sum, (sum / 100)));
                }
                console.log("it was even" + total);
            }
            else {
                for(var i = 0; i < (sum*sum); i++) {
                    parseInt(total = total + sum);
                }
            }
            total = total + string.length;

            // check if the value is in a valid range, if not, loop again
            var word1 = total;
                while(word1 > 25000) {
                word1 = parseInt(word1 / 2);
            }

            var word2 = parseInt(word1.toString().split("").reverse().join(""))+string.length;

            while(word2 > 25000) {
                word2 = parseInt(word2 / 2);
            }
        }
        else {
            var word1 = Math.floor((Math.random()*25000)+1);
            var word2 = Math.floor((Math.random()*25000)+1);
        }

        $.ajax({
            type: "POST",
            url: "names.txt",
        }).done(function(msg) {
            var names = msg.split('\n');
            var name1 = names[word1].toLowerCase().replace(/\b[a-z]/g, function(letter) { return letter.toUpperCase(); });
            var name2 = names[word2].toLowerCase().replace(/\b[a-z]/g, function(letter) { return letter.toUpperCase(); });

            $("#name-space").hide();
            $("#name-space").html("<div id=\"name-wrapper\">Your name is:<br /><h1>" + name1 + " " + name2 + "</h1></div>");
            $("#name-space").fadeIn(100);
        });
    }
于 2013-04-01T15:46:16.557 に答える
0

テキストではなく JavaScript オブジェクトとして保存しないのはなぜですか?

次に、簡単な ajax 呼び出しを行い、オブジェクトを取得できます。これは、プレーン ファイルを使用して正規表現を実行するよりもはるかに高速です。

ファイルの内容に応じて、JSON の作成をお手伝いできます。

于 2013-04-01T12:16:36.647 に答える