簡體   English   中英

JavaScript:如何從字符串中查找和檢索數字

[英]JavaScript: How to find and retrieve numbers from a string

我正在使用RPG Maker MV,這是一個使用JavaScript創建插件的游戲創建者。 我已經有一個JavaScript插件,但是我正在嘗試編輯插件的一部分,以便它基本上檢查游戲中某個角色中是否存在某個字符串,如果存在,則將特定變量設置為該字符串中的數字。

for (var i = 0; i < page.list.length; i++) {
    if (page.list[i].code == 108 && page.list[i].parameters[0].contains("<post:" + (n) + "," + (n) + ">")) {
        var post = page.list[i].parameters[0];
        var array = post.split(',');
        this._origMovement.x = Number(array[1]);
        this._origMovement.y = Number(array[1]);
        break;
    };
};

所以我知道前兩行是有效的,並且當我只放入特定字符串時包含了工作。 但是我不知道如何檢查兩個用逗號分隔並包裹在'<>'標記中的數字,而不知道這些數字是什么。

然后,它需要提取這些數字,然后將一個分配給this._origMovement.x,將另一個分配給this._origMovement.y。

任何幫助將不勝感激。

這是我使用正則表達式的極少數情況之一。 如果您還沒有遇到正則表達式,建議您閱讀正則表達式的簡介,例如: https : //regexone.com/

在您的情況下,您可能想要這樣的東西:

var myRegex = /<post:(\d+),(\d+)>/;
var matches = myParameter.match(myRegex);
this._origMovement.x = matches[1];   //the first number
this._origMovement.y = matches[2];   //the second number

myRegex變量是一個正則表達式,用於查找您描述的模式,並具有2個捕獲組 ,用於查找一個或多個數字的字符串( \\d+表示“一個或多個數字”)。 .match()調用的結果將為您提供一個包含整個匹配項和捕獲組結果的數組。

如果要允許使用十進制數字,則需要使用其他允許使用小數點的捕獲組,例如([\\d\\.]+) ,這意味着“一個包含一個或多個數字和十進制的序列點數”(或更復雜) (\\d+\\.?\\d*) ,它是“一個或多個數字的序列,后跟一個可選的小數點,然后是零個或多個數字”。

周圍有很多不錯的教程可以幫助您編寫好的正則表達式,而一些站點可以幫助您對表達式進行實時測試以確保它們可以正常工作。 它們是強大的工具,但請注意不要過度使用它們!

得到它的工作。 對於任何可能感興趣的人,下面的代碼。

    for (var i = 0; i < page.list.length; i++) {
        if (page.list[i].code == 108 && page.list[i].parameters[0].contains("<post:")) {
            var myRegex = /<post:(\d+),(\d+)>/;
            var matches = page.list[i].parameters[0].match(myRegex);
            this._origMovement.x = matches[1];   //the first number
            this._origMovement.y = matches[2];   //the second number
            break;
        }
    };

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM