JavaScript中如何通过空格和换行符来分割字符串

30

我想把字符串中的值拆分开来,比方说我有一个字符串:

var example = "X Y\nX1 Y1\nX2 Y2"

我希望将其按空格和\n分开,因此我想得到类似这样的东西:

var 1 = X
var 2 = Y
var 3 = X1
var 4 = Y1

我能否在数值X后检查是否有一个Y?我的意思是XY都是纬度和经度,所以我需要这两个值。


2
你不能在JS中使用那些结构,因此你需要先展示有效的JavaScript。 - mplungjan
1
重复:https://dev59.com/6nVD5IYBdhLWcg3wE3Xz - Marvin Emil Brach
4个回答

57
你可以用空格替换换行符,然后按空格拆分(或反之亦然)来完成此操作。
example.replace( /\n/g, " " ).split( " " )

演示:http://jsfiddle.net/fzYe7/

如果您需要先验证字符串,那么首先按换行符拆分,循环遍历结果,并使用同时拆分字符串的正则表达式验证每个字符串可能更容易:

var example = "X Y\nX1 Y1\nX2 Y2";
var coordinates = example.split( "\n" );
var results = [];

for( var i = 0; i < coordinates.length; ++i ) {
    var check = coordinates[ i ].match( /(X.*) (Y.*)/ ); 

    if( !check ) {
        throw new Error( "Invalid coordinates: " + coordinates[ i ] );
    }

    results.push( check[ 1 ] );
    results.push( check[ 2 ] );    
}

演示:http://jsfiddle.net/fzYe7/1/


如果我想检查值X和Y是否为数字怎么办?我尝试了类似这样的代码:[示例](http://jsfiddle.net/fzYe7/3/),但它不起作用:/ 我有void 0。 - lol2x
http://jsfiddle.net/fzYe7/4/ - JJJ
如果我想将每个数字值保存到变量中(在循环中,因为我不知道会得到多少个坐标),是否可以将第一个数字保存到X *中,第二个数字保存到Y 中?是一个数字。(http://jsfiddle.net/fzYe7/7/) - lol2x

15

var string = "x y\nx1 y1\nx2 y2";
var array = string.match(/[^\s]+/g);

console.log(array); 

jsfiddle: http://jsfiddle.net/fnPR8/

此代码会将字符串分割成单词的数组,然后您需要遍历它...


7
使用正则表达式以所有空格来拆分字符串文本。
var example = "X Y \nX1 Y1 \nX2 Y2";
var tokens = example.split(/\s+/g);

console.log(tokens.length);
for(var x = 0; x < tokens.length; x++){
   console.log(tokens[x]);
}

示例代码 http://jsfiddle.net/GJ4bw/


1
你可以先按新字符拆分并将其存储在数组中,然后再按空格拆分。
以下内容可能会提供参考 链接

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接