LlParseString2List

来自人工智能助力教育知识百科
Ty讨论 | 贡献2020年8月23日 (日) 03:49的版本 (创建页面,内容为“{{LSL Header|ml=*}}{{LSLC|Keywords}}{{LSLC|Flow Control}}{{LSLC|}} {{函数详情 |函数名 = Function: list llParseString2List( string src, list separators, list…”)
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳转至: 导航搜索

Template:Needs Translation/


函数名
Function: list llParseString2List( string src, list separators, list spacers );
参数:

• string src – source string

• list separators – separators to be discarded

• list spacers – spacers to be kept

返回值:

返回一个被 src 分解成字符串列表的列表,丢弃分隔符,保留间隔符,丢弃生成的任何 null (空字符串)值。

注意事项
注意事项
  • 删除所有空字符串(由于间隔器或分隔器彼此相邻或两端相邻而产生) ;
如果您想要它们(例如,为了保持列表的顺序) ,可以使用 llparse/stringkeepnulls;
  • 只使用前8个分离器和前8个间隔器。除此之外的一切都会被忽略。可以参考下面的 # useful snippets section。输出中项数的唯一限制是可用脚本内存。
  • 所有分隔符和间隔符都必须是字符串。所有其他类型都将被忽略;
  • 分离器比间隔器更有先例。字符串从头到尾被解析。在移动到下一个位置之前,将每个位置与分离器、垫片进行比较;
  • 重复的分离器和间隔器没有不良影响;
  • Llparsestring2list 返回的列表中的所有元素都是字符串,如果要将它们用作其他类型,则必须显式地进行类型转换。不要依赖于其他 lllist2 *函数的隐式类型映射(因为它们通常返回一个默认值) ;
  • 记住使用变量捕获操作的结果,除非您计划直接对结果采取行动。
示例
示例一
default
{
    state_entry()
    {
        // This will say:
        // <A><crazy><fox><.><Saw><the><moon><.><.>
        string my_string = "A crazy fox.  Saw the moon..";
        list my_list = llParseString2List(my_string,[" "],["."]);
        llOwnerSay("<" + llDumpList2String(my_list,"><") + ">");
 
        // This will say:
        //  <A><crazy><fox><.><><><Saw><the><moon><.><><.><>
        my_list = llParseStringKeepNulls(my_string,[" "],["."]);
        llOwnerSay("<" + llDumpList2String(my_list,"><") + ">");
    }
}

虽然 lsl 不支持 list-in-lists,但是您可以通过连续调用来模拟 list-in-lists,或者您可以使用 json.this 示例中有些项目提供了额外的信息。

 
string shoppinglist = "macaroni::pepperoni::bread#wheat::sausage#italian::coffee::syrup::apple::ice cream#strawberry#chocolate#vanilla";
 
default
{
    state_entry()
    {
        list items = llParseString2List(shoppinglist, ["::"], []);
        integer i = 0;
        integer j = llGetListLength(items);
        for(;i < j; ++i)
        {
            list desc = llParseString2List(llList2String(items, i), ["#"], []);
            if(llGetListLength(desc) > 1)
            {
                list types = llDeleteSubList(desc,0,0);
                llOwnerSay("Item: "+ llList2String(desc, 0) + "  Type: " + llList2CSV(llDeleteSubList(types,-2,-1) + llDumpList2String(llList2List(types,-2,-1), " & ")));
            } else {
                llOwnerSay("Item: "+ (string)desc);
            }
        }
    }
}
相关函数
llParseStringKeepNulls

llDumpList2String

llCSV2List

llList2CSV

相关事件