في TCL كيفية تشغيل السلسلة؟

لدي سؤال حول سلسلة في TCL:

HANDLE_NAME "/group1/team1/RON"

proc HANDLE_NAME {playerName} {
    #do something here
}

نجتاز السلسلة "/ group1/team1/RON" إلى proc ، ولكن في مكان ما داخل HANDLE_NAME ، فنحن نحتاج فقط إلى الجزء الأخير وهو "RON" ، وكيفية تشغيل سلسلة الإدخال والحصول على الجزء الأخير من الإدخال ( فقط RON) وتعيينه إلى متغير؟

هل أستطيع مساعدتك؟

0

4 إجابة

proc HANDLE_NAME {playerName} {
    set lastPart [lindex [split $playerName "/"] end]
    # ...
}
0
وأضاف

Using string last to find the last forward slash. Then use string range to get the text after that. http://tcl.tk/man/tcl8.5/TclCmd/string.htm

set mystring "/group1/team1/RON"
set slash_pos [string last "/" $mystring]
set ron_start_pos [incr slash_pos]
set ron [string range $mystring $ron_start_pos end]
0
وأضاف

لإضافة إجابة ثالثة ، يمكنك استخدام regexp الراسية في نهاية السلسلة أيضًا.

regexp {/([^/]+)$} $playerName -> lastPart

ولكن الحل lindex/split by acheong87 هو بالتأكيد الطريقة الطبيعية إذا كانت السلاسل التي تستخدمها تشبه مسارات الملفات.

0
وأضاف

ولإضافة إجابة رابعة ، إذا كانت السلسلة في الواقع مسارًا إلى ملف ، فاستخدم file :

set filename [file tail $playerName]
0
وأضاف