Difference between revisions of "SplitLine"
Jump to navigation
Jump to search
Huney Jewell (talk | contribs) (Add SplitLine function example) |
Huney Jewell (talk | contribs) m (Clarify a bit) |
||
Line 6: | Line 6: | ||
== Function: [[string]] SplitLine([[string]] {{LSL Param|source}},[[string]] {{LSL Param|separator}},[[integer]] {{LSL Param|stride}}); == | == Function: [[string]] SplitLine([[string]] {{LSL Param|source}},[[string]] {{LSL Param|separator}},[[integer]] {{LSL Param|stride}}); == | ||
<div style="padding: 0.5em;"> | <div style="padding: 0.5em;"> | ||
Returns a [[String|string]] split by inserted | Returns a [[String|string]] split by inserted 'new line' escape code at '''{{LSL Param|separator}}''' positions to portions of at least '''{{LSL Param|stride}}''' length.<br/> | ||
In other words, a line can be split up to several lines at positions where '''{{LSL Param|separator}}''' string is found, each line with a length of at least '''{{LSL Param|stride}}''' characters. | In other words, a line can be split up to several lines at positions where '''{{LSL Param|separator}}''' string is found, each line with a length of at least '''{{LSL Param|stride}}''' characters. | ||
{| | {| |
Revision as of 08:33, 5 October 2007
LSL Portal | Functions | Events | Types | Operators | Constants | Flow Control | Script Library | Categorized Library | Tutorials |
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.
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)); } }