Как я могу разделить переменную построчно в TCL?

Оператор == всегда предназначен для сравнения ссылок на объекты, тогда как метод сравнения строк .equals () переопределяется для сравнения содержимого:

String s1 = new String("abc");
String s2 = new String("abc");
System.out.println(s1 == s2); // It prints false (reference comparison)
System.out.println(s1.equals(s2)); // It prints true (content comparison)
0
задан itd 17 January 2019 в 10:28
поделиться

2 ответа

Если я правильно понимаю, и представление ваших примерных данных является точным, то вам не нужно обрабатывать ([split]) данные, хранящиеся в results, но оставить это анализатору списка Tcl. Другими словами, входные данные уже являются допустимым строковым представлением списка Tcl, подходящего для дальнейшей обработки. Смотрите:

set results {
    {0 0 0 0 1}
    {2 2 3 3 3}
    {1 1 2 3 4}
};

set thresholds {
    3
    2
    1
}

lmap values $results threshold $thresholds {
    lmap v $values {expr {$v >= $threshold}}
}

Это даст:

{0 0 0 0 0} {1 1 1 1 1} {1 1 1 1 1}

Фон: когда $results обрабатывается [lmap], он автоматически превращается в список.

0
ответ дан mrcalvin 17 January 2019 в 10:28
поделиться

Я думаю, что лучше разделить в соответствии с символом новой строки, а затем применить регулярное выражение для получения данных. Я попробовал пример кода.

set results "{0 0 0 0 1}
{2 2 3 3 3}
{1 1 2 3 4}";
set result [split $results \n];
foreach line $result {
if {[regexp {^\s*\{(.+)\}\s*} $line Complete_Match Content]} {
puts "$Content\n";
}
}
0
ответ дан NAVEEN PRAKASH 17 January 2019 в 10:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: