Dimenticare icon

split(string)

Dimenticare | PRO | 01/07/16 08:21:42 PM UTC | 0 ⭐ | 11748 👁️ | Never ⏰ | []
Game Maker |

0 B

|

None

|

0 👍

/

0 👎

/// ds_queue split(String s, [char delimiter]);
// Will only recognize double-quotation mark for block quotes, not single-quotation marks.
// You can pass a multiple-character string as the delimiter but it'll never get recognized
//      because string_char_at will never equal a multi-character delimiter.
 
var base=argument[0];                           // Base string
if (argument_count==1)
    var delimiter=",";
else
    var delimiter=argument[1];                  // Character to split around, default a comma
var inline=false;                               // inside a block quote?
var queue=ds_queue_create();                    // Contains the individual words
var tn="";                                      // temporary substring
 
base=base+delimiter;                            // lazy way of ensuring the last term in the list does not get skipped
 
for (var i=1; i<=string_length(base); i++){     // for each character in the string:
    var c=string_char_at(base, i);              //      Current character
    if (string_char_at(base, i-1)=="\"){        //      If the previous character is a backslash, bypass the other checks
        tn=string_copy(tn, 1, string_length(tn)-1);     // and remove the backslash
        tn=tn+c;
    } else if (c=='"'){                         //      If double quotation mark:
        if (inline){                            //          If already inside a block, end the block
            inline=false;
        } else {                                //          If not already inside a block, start a block
            inline=true;
        }
    } else if (c==delimiter&&!inline){          //      Delimiter met and not inside a block, enqueue and reset the substring
        ds_queue_enqueue(queue, tn);
        tn="";
    } else {                                    // Just an ordinary character, add it to the substring
        tn=tn+c;
    }
}
 
return queue;

Comments

  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎

    
        
  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎

    
        
  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎