SplitLine

From Second Life Wiki
Revision as of 18:06, 24 January 2015 by ObviousAltIsObvious Resident (talk | contribs) (<lsl> tag to <source>)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Function: string SplitLine(string source, string separator, integer stride);

Returns a string split by inserted 'new line' escape code at separator positions to portions of at least stride length.
In other words, a line can be split up to several lines at positions where separator string is found, each line with a length of at least stride characters.

• string source source string
• string separator split separator string
• integer stride split stride

Specification

string SplitLine(string _source, string _separator, integer _stride)
{
    integer offset= _stride;
    integer sourceLen = llStringLength(_source);
    integer separatorLen = llStringLength(_separator);

    while (sourceLen > _stride)
    {
	integer split = llSubStringIndex(llGetSubString(_source, offset, -1), _separator);
	if (split != -1)
        {
	    _source = llInsertString(_source, offset + split + separatorLen, "\n");
	    sourceLen = llStringLength(_source) - offset;
	    offset += split + _stride + 2;
	}
        else sourceLen = -1;
    }
    return _source;	
}

Example

Trivial example to listen to any chat from the object owner for source values and respond lines split at space (" ") positions using 10 characters stride value.

// Insert code of SplitLine user function here

default
{
    state_entry()
    {
        llOwnerSay("Enter text");
	llListen(0, "", llGetOwner(), "");
    }
	
    listen(integer _chan, string _str, key _id, string _msg)
    {
        llOwnerSay(_msg + "\nsplit to:\n" + SplitLine(_msg, " ", 10));
    }
}