微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

解析以反斜杠分隔的层次结构路径不同级别的数量

如何解决解析以反斜杠分隔的层次结构路径不同级别的数量

我的层次结构路径具有不同数量的级别(最多4个):

FACILITIES \ PARK
ROADS \ GRASS/TURF BLVD MAINTENANCE
ROADS \ SIDEWALKS \ REPLACEMENT
FACILITIES \ PARKING - MAIN ST
RECREATION \ BANDSHELL \ PROPERTY \ BUILDING-GENERAL
FACILITIES \ FIREHALL \ PLUMBING
FACILITIES

我想解析_\_分隔符处的级别,并将值插入Maximo数据库列中:

(这些列的长度现在只有10个。稍后我将创建更长的适当的自定义列。)


我尝试过的事情:

我已经弄清楚了如何解析级别并将值插入列中- IF (这是一个很大的IF),总是有4个级别:>

#Auto-script on WORKORDER
h = mbo.getString("HIERARCHYPATH")
mbo.setValue("woeQ1",(h.split(' \\ '))[0][:10])
mbo.setValue("woeQ2",(h.split(' \\ '))[1][:10])
mbo.setValue("woeQ3",(h.split(' \\ '))[2][:10])
mbo.setValue("woeQ4",(h.split(' \\ '))[3][:10])

但是,我当然不会总是有4个等级。我可以在1-4之间设置任意数量的水平。


如何解析以反斜杠分隔的层次结构路径(具有不同数量的级别)?

解决方法

您可以让“常规”拆分将您的行划分为

double scan_data(char *a,double *b) {
    char x;
    double y;
    int result;
    printf("input en operator og hvis relevant,operand: ");
    if (scanf("%c,%lf",&x,&y) != 2) {
        printf("invalid input\n");
        return -1.0;
    }
    /* Hvis unær output=0,0. */
    printf("scan y step 1: %f\n",y);

    unary(x,&result);  // no info on this function?

    if (result == -1) {
        y = 0.0;
    }
    *a = x;
    *b = y;
    printf("scan b: %f\n",*b);
    return 0.0;
}

然后,您可以遍历返回的列表,设置每个值

struct PDFView: View {
    var body: some View {
       VStack {
         ForEach(tasks) { task in
            TaskRowView(task: task)
              .overlay(
                 GeometryReader { geo in
                    // geo.size.height - to get height of current view
                 })
         }
       }
       .layoutPriority(1)
   }
}

如果您需要始终在列表中至少提供4个(或N个)成员,则可以使用>>> s = """\ ... FACILITIES \ PARK ... ROADS \ GRASS/TURF BLVD MAINTENANCE ... ROADS \ SIDEWALKS \ REPLACEMENT ... FACILITIES \ PARKING - MAIN ST ... RECREATION \ BANDSHELL \ PROPERTY \ BUILDING-GENERAL ... FACILITIES \ FIREHALL \ PLUMBING ... FACILITIES ... """ >>> for row in s.splitlines(): ... print(row.split(" \\ ")) ... ['FACILITIES','PARK'] ['ROADS','GRASS/TURF BLVD MAINTENANCE'] ['ROADS','SIDEWALKS','REPLACEMENT'] ['FACILITIES','PARKING - MAIN ST'] ['RECREATION','BANDSHELL','PROPERTY','BUILDING-GENERAL'] ['FACILITIES','FIREHALL','PLUMBING'] ['FACILITIES'] 来填写其余值

max_col_length = 10  # to be updated by author
for row in s.splitlines():
    for index,atom in enumerate(row.split(" \\ "),1):  # count from 1
        mbo = "create a new row"  # not shown by author
        mbo.setValue("WOEQ{}".format(index),atom[:max_col_length])
    "INSERT row if processing rows individually"
"INSERT all rows if able to upload them all at the same time"
,

这是我最终使用的脚本(这是@ ti7答案的一种形式)。

在新的层次结构路径少于四个级别的情况下,该脚本将使现有值无效。

Node::Y { nd: nd3,max: max } => {
  for m in 0..max - 1 {
    match recur(nd3.clone()) {
      Ok(y) => return Ok(y),_ => {}
    }
  }
  return Ok(123);
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。