如何从字符串中获取尺寸?

时间:2014-01-07 10:29:16

标签: javascript

嗨,我是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/

4 个答案:

答案 0 :(得分:0)

使用Regex这将是一项简单的任务。这样的事情会起作用:

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


注意:这个正则表达式对格式做了几个假设,最大的假设就是结果周围始终存在空白,而×周围的空格总是一个每侧。如果格式可能会改变,那么请告诉我,因为可以调整正则表达式。该代码还假设匹配将得到保证,但我认为这是公平的,因为您的格式看起来相当可靠 - 当然,只有您知道哪些假设是可以的。

答案 1 :(得分:0)

试试这个:

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

这会给你分辨率,就像字符串一样有一个真正的“x”。如果需要,您也可以将x和y分辨率直接用作整数。

答案 2 :(得分: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

答案 3 :(得分:0)

正则表达式似乎是一个很好的方法。在这里,我使用match返回匹配元素的数组:

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

Fiddle