Perl中的字符串分区(将复杂的字符串转换为数组)

里特什·库玛·古普塔(Ritesh Kumar Gupta)

有一个大字符串s,其中包含以逗号分隔的商品代码。

例如

$s="90320,328923,SKJS32767,DSIKUDIU,829EUE,AUSIUD0Q897,AJIUE98,
387493420DA,93RE,AKDJ93,SADI983,90439,JADKJ84";

在我的应用程序中,这些字符串被传递给一个函数,该函数返回这些商品的价格,该函数的输出是输入商品代码的相应价格。

但是,由于某些限制,的最大长度$s不应超过16。如果长度$s超过16,则将引发异常。因此,应将这些字符串划分为一个数组,以使数组中每个元素的长度小于或等于16。

例如:分区后$s,数组为:

$Arr[0]='90320,328923',#Note First 16 char is 0320,328923,SK. 
However, SK is neglected as its an incomplete(being partial) item code.
$Arr[1]='SKJS32767',
$Arr[2]='DSIKUDIU,829EUE',
$Arr[3]='AUSIUD0Q897',
$Arr[4]='AJIUE98',
$Arr[5]='387493420DA,93RE'

对于给定的$s,函数应遵循上述约束返回一个数组。

我的方法是使用该substr函数,并从更新的位置索引中提取最多16个偏移量的字符串。可以用更好的方法吗?

鲍罗丁

使用全局/g正则表达式匹配,这非常简单

该程序演示。regex模式查找尽可能多的字符,最多十六个字符,后跟逗号或字符串结尾。

但是,我的第一个想法与RobEarl的注释相同-为什么不只将字符串中的一个字段放入数组的每个元素中?是否真的有可能仅仅因为可能就将多个元素包装在一起?

use strict;
use warnings;
use 5.010;

my $s = '90320,328923,SKJS32767,DSIKUDIU,829EUE,AUSIUD0Q897,AJIUE98,387493420DA,93RE,AKDJ93,SADI983,90439,JADKJ84';

my @partitions;

while ( $s =~ /\G(.{0,16})(?:,|\z)/g ) {
  push @partitions, $1;
}

say for @partitions;

输出

90320,328923
SKJS32767
DSIKUDIU,829EUE
AUSIUD0Q897
AJIUE98
387493420DA,93RE
AKDJ93,SADI983
90439,JADKJ84

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将字符串转换为复杂值的numpy数组

来自分类Dev

将复杂的字符串转换为python中的列表

来自分类Dev

将字符串转换为数组perl

来自分类Dev

将数组转换为字符串

来自分类Dev

将字符串转换为数组

来自分类Dev

将数组转换为字符串

来自分类Dev

将数组中的数组转换为字符串

来自分类Dev

将字符串转换为在Perl中浮动

来自分类Dev

如何将字符串转换为数组中的字符串数组

来自分类Dev

转到:将数组中的字符串转换为整数

来自分类Dev

将BigDecimal转换为数组中的字符串

来自分类Dev

将字符串转换为数组中的日期对象

来自分类Dev

将字符串转换为Java中的Int数组

来自分类Dev

将字符串转换为Javascript中的数组?

来自分类Dev

将BigDecimal转换为数组中的字符串

来自分类Dev

将字符串转换为数组中的日期对象

来自分类Dev

将JSON字符串转换为php中的数组?

来自分类Dev

将字符串转换为Java中的Int数组

来自分类Dev

将数组转换为句子中的字符串

来自分类Dev

将字符串转换为JavaScript中的对象数组

来自分类Dev

将数组中的元素从数字转换为字符串

来自分类Dev

R:将数组中的字符串转换为整数

来自分类Dev

将字符串转换为数组 JavaScript 中的数字

来自分类Dev

在Perl中,如何将字节数组转换为Unicode字符串?

来自分类Dev

如何将字符串数组转换为D中的字符串?

来自分类Dev

将字符串数组转换为C中的字符串

来自分类Dev

从字符数组转换为字符串

来自分类Dev

将字符转换为字符串(无数组)?

来自分类Dev

将字符串转换为字符数组