2014-01-07 109 views
1

嗨我是一個JavaScript的新手,我試圖從字符串中獲取尺寸。這是代碼:如何從字符串獲取尺寸?

var str = '1.jpeg (JPEG Image, 1298 × 1600 pixels)'; 
var index1 = str.indexOf('('), index2 = str.indexOf(')'); 
str = str.substr(index1+1, (index2-index1-1)); 
str = str.split('×'); 
alert(str); 

我不能得到它輸出到1298 × 1600注意×不是常規的X。這裏有一個現場版本http://jsfiddle.net/s5b4E/

回答

0

嘗試使用正則表達式和String.match這樣的:

var str = '1.jpeg (JPEG Image, 1298 × 1600 pixels)'; 

var res = str.match(/[0-9]+\s[×]\s[0-9]+/); 

如果你不理解這種表達是如何工作的,只是發表評論我要給出詳細的信息。

Here is a fiddle

0

這將是一個簡單的任務使用正則表達式。像這樣將工作:

var str = '1.jpeg (JPEG Image, 1298 × 1600 pixels)'; 
var regex = /\d+ × \d+/; 
var result = str.match(regex)[0]; 

說明:\d+將匹配任何數量和 × 將匹配的中間部分。將這些組合在一起將匹配你正在尋找的結果。

Here is a working example


注意:此正則表達式做關於格式夫婦假設,最大的一個是,該空白是始終圍繞着結果存在,且×周圍的空白始終是一個每一面。如果格式可能改變,那麼讓我知道正則表達式可以適應。該代碼還假設一場比賽將得到保證,但我認爲這是公平的,因爲你的格式看起來相當可靠 - 當然,只有你會知道哪些假設是可以的。

+0

原因爲downvote? – musefan

0

試試這個:

var str = "1.jpeg (JPEG Image, 1298 × 1600 pixels)"; 
var res = str.split(" ")[3] + "x" + str.split(" ")[5]; 

這將使你的分辨率爲字符串,其真正的「X」。如果需要,也可以直接使用x和y分辨率作爲整數。

0

一個正則表達式將似乎是一個很好的路要走。這裏我用match返回匹配的元素的數組:

var regex = /\s(\d+)\s×\s(\d+)\s/ 
var matches = str.match(regex); // matches[1] = 1298, matches[2] = 1600 

Fiddle