2013-04-01 23 views
1

我使用的PhoneGap構建,所以我僅限於HTML5,CSS和JavaScript/jQuery的構建手機應用程序,但我想實現以下目標。jQuery的,我將如何創建起了個名字 - LIST.TXT拉到一個隨機名稱基於用戶輸入

我想從用戶輸入可能是「約翰史密斯」,然後根據該輸入,從文件中拉出某些行,所以如果另一個用戶輸入相同的名稱,他們會得到相同的結果。我搜索了一些文章,從名稱中使用音節和字符數來生成一個名字等等,但是似乎沒有什麼能夠做我想做的事情。

我還計劃對用戶輸入進行哈希處理,然後用隨機生成的名稱將其存儲在遠程數據庫中,然後如果哈希再次出現,它會使用相同的名稱,但設備上的某些內容對於幫助加載時間等。

你有什麼想法是根據用戶輸入生成隨機名稱的最佳方法?任何幫助非常感謝,謝謝!

我的名字,LIST.TXT看起來是這樣的:

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

回答

0

爲什麼不將它保存爲JavaScript對象,而不是文本?

然後,您可以快速調用ajax並獲取對象。這比使用純文件並運行正則表達式要快得多。

根據文件的內容,我可以幫助您構建該JSON。

+1

這不是問題的答案。充其量,這是一條評論。 –

+0

已更新!問題不明確。如果他可以分享他的輸入文件,我可以給出更準確的答案。儘管如此,我仍然會將此編輯視爲答案。 –

+0

Atif我很感激幫助,但數據存儲目前不是問題,我更喜歡用算法計算基於用戶輸入的名稱。 – KrizOne

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); 
     }); 
    } 
相關問題