1

我正在使用 phonegap build 构建一个电话应用程序,因此我仅限于 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 回答