我有一个如下所示的字符串,它们是表中的in:
1,2,3,4,5,6,7,8,9如果有人从数据库中删除某些内容,我将需要更新字符串。我知道这样做会去掉值,但不会去掉逗号。是否知道如何检查id在前后是否有逗号,这样我的字符串就不会中断?
$new_values = $original_values[0];
$new_values =~ s/$car_id//;结果:1,2,,4,5,6,7,8,9采用上述样本(bad)。应该是1,2,4,5,6,7,8,9。
发布于 2020-10-23 20:29:00
您可以使用
s/^$car_id,|,$car_id\b//详细信息
^ - string$car_id的开始-变量value, - comma| - or, - comma$car_id -变量value\b -单词边界。发布于 2020-10-23 20:30:34
要从字符串中删除$car_id:
my $car_id = 3;
my $new_values = q{1,2,3,4,5,6,7,8,9};
$new_values = join q{,}, grep { $_ != $car_id }
split /,/, $new_values;
say $new_values;
# Prints:
# 1,2,4,5,6,7,8,9如果已经删除了id(s),并且需要删除额外的逗号,则重新格式化字符串,如下所示:
my $new_values = q{,,1,2,,4,5,6,7,8,9,,,};
$new_values = join q{,}, grep { /\d/ } split /,/, $new_values;
say $new_values;
# Prints:
# 1,2,4,5,6,7,8,9发布于 2020-10-23 20:25:49
s/^\Q$car_id\E,|,\Q$car_id\E\b//另一种方法是存储额外的前导和尾随逗号(,1,2,3,4,5,6,7,8,9,)。
主要的好处是它使使用SQL搜索id变得更容易(因为您可以搜索,$car_id,)。编辑也是如此。
在Perl方面,您可以使用
s/,\K\Q$car_id\E,// # To removesubstr($_, 1, -1) # To get actual stringhttps://stackoverflow.com/questions/64506803
复制相似问题