路径转换问题

whdugh 2014-02-27 05:07:58
在工作中遇到一个问题,就是做路径格式转换,如下:

以"/"开头,可替换的使用以下变量,其他的就是路径名称
例:/wfpic/$YEAR/$MONTH/$DAY 转换后---》/wfpic/2014/02/27
/表示所有的数据存放在FTP跟目录。

以上,想不到好的方法,求大神指点,小弟先谢谢了
...全文
132 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
whdugh 2014-02-27
  • 打赏
  • 举报
回复
引用 1 楼 zhao4zhong1 的回复:
[/code]
谢谢赵老师,我好好看看
帅得不敢出门 2014-02-27
  • 打赏
  • 举报
回复
用shell很容易实现的 zengming@jyx:~/test$ ./replace.sh /wfpic/2014/02/27 zengming@jyx:~/test$ cat ./replace.sh #!/usr/bin/env sh YEAR=`date +%Y` MONTH=`date +%m` DAY=`date +%d` echo /wfpic/$YEAR/$MONTH/$DAY
shiguojie19892 2014-02-27
  • 打赏
  • 举报
回复
不够详细,不明白什么问题。
赵4老师 2014-02-27
  • 打赏
  • 举报
回复
仅供参考
#include <stdio.h>
#include <string.h>
char string[80];
char seps1[3];
char seps2[3];
char *token;
char *zzstrtok (
    char *string,
    const char *control1,//连续出现时视为中间夹空token
    const char *control2 //连续出现时视为中间无空token
    )
{
    unsigned char *str;
    const unsigned char *ctrl1 = control1;
    const unsigned char *ctrl2 = control2;
    unsigned char map1[32],map2[32];
    static char *nextoken;
    static char flag=0;
    unsigned char c;
    int L;

    memset(map1,0,32);
    memset(map2,0,32);
    do {
        map1[*ctrl1 >> 3] |= (1 << (*ctrl1 & 7));
    } while (*ctrl1++);
    do {
        map2[*ctrl2 >> 3] |= (1 << (*ctrl2 & 7));
    } while (*ctrl2++);

    if (string) {
        if (control2[0]) {
            L=strlen(string);
            while (1) {
                c=string[L-1];
                if (map2[c >> 3] & (1 << (c & 7))) {
                    L--;
                    string[L]=0;
                } else break;
            }
        }
        if (control1[0]) {
            L=strlen(string);
            c=string[L-1];
            if (map1[c >> 3] & (1 << (c & 7))) {
                string[L]=control1[0];
                string[L+1]=0;
            }
        }
        str=string;
    }
    else        str=nextoken;

    string=str;
    while (1) {
        if (0==flag) {
            if (!*str) break;
            if (map1[*str >> 3] & (1 << (*str & 7))) {
                *str=0;
                str++;
                break;
            } else if (map2[*str >> 3] & (1 << (*str & 7))) {
                string++;
                str++;
            } else {
                flag=1;
                str++;
            }
        } else if (1==flag) {
            if (!*str) break;
            if (map1[*str >> 3] & (1 << (*str & 7))) {
                *str=0;
                str++;
                flag=0;
                break;
            } else if (map2[*str >> 3] & (1 << (*str & 7))) {
                *str=0;
                str++;
                flag=2;
                break;
            } else str++;
        } else {//2==flag
            if (!*str) return NULL;
            if (map1[*str >> 3] & (1 << (*str & 7))) {
                str++;
                string=str;
                flag=0;
            } else if (map2[*str >> 3] & (1 << (*str & 7))) {
                str++;
                string=str;
            } else {
                string=str;
                str++;
                flag=1;
            }
        }
    }
    nextoken=str;

    if (string==str) return NULL;
    else             return string;
}
void main()
{
   strcpy(string,"A \tstring\t\tof ,,tokens\n\nand some  more tokens, ");
   strcpy(seps1,",\n");strcpy(seps2," \t");
   printf("\n[%s]\nTokens:\n",string);
   token=zzstrtok(string,seps1,seps2);
   while (token!=NULL) {
      printf(" <%s>",token);
      token=zzstrtok(NULL,seps1,seps2);
   }

   strcpy(string,"1234| LIYI|China | 010 |201110260000|OK");
   strcpy(seps1,"|");strcpy(seps2," ");
   printf("\n[%s]\nTokens:\n",string);
   token=zzstrtok(string,seps1,seps2);
   while (token!=NULL) {
      printf(" <%s>",token);
      token=zzstrtok(NULL,seps1,seps2);
   }

   strcpy(string,"1234|LIYI||010|201110260000|OK");
   strcpy(seps1,"");strcpy(seps2,"|");
   printf("\n[%s]\nTokens:\n",string);
   token=zzstrtok(string,seps1,seps2);
   while (token!=NULL) {
      printf(" <%s>",token);
      token=zzstrtok(NULL,seps1,seps2);
   }

   strcpy(string,"1234|LIYI||010|201110260000|OK");
   strcpy(seps1,"|");strcpy(seps2,"");
   printf("\n[%s]\nTokens:\n",string);
   token=zzstrtok(string,seps1,seps2);
   while (token!=NULL) {
      printf(" <%s>",token);
      token=zzstrtok(NULL,seps1,seps2);
   }

   strcpy(string,"a");
   strcpy(seps1,",");strcpy(seps2,"");
   printf("\n[%s]\nTokens:\n",string);
   token=zzstrtok(string,seps1,seps2);
   while (token!=NULL) {
      printf(" <%s>",token);
      token=zzstrtok(NULL,seps1,seps2);
   }

   strcpy(string,"a,b");
   strcpy(seps1,",");strcpy(seps2,"");
   printf("\n[%s]\nTokens:\n",string);
   token=zzstrtok(string,seps1,seps2);
   while (token!=NULL) {
      printf(" <%s>",token);
      token=zzstrtok(NULL,seps1,seps2);
   }

   strcpy(string,"a,,b");
   strcpy(seps1,",");strcpy(seps2,"");
   printf("\n[%s]\nTokens:\n",string);
   token=zzstrtok(string,seps1,seps2);
   while (token!=NULL) {
      printf(" <%s>",token);
      token=zzstrtok(NULL,seps1,seps2);
   }

   strcpy(string,",a");
   strcpy(seps1,",");strcpy(seps2,"");
   printf("\n[%s]\nTokens:\n",string);
   token=zzstrtok(string,seps1,seps2);
   while (token!=NULL) {
      printf(" <%s>",token);
      token=zzstrtok(NULL,seps1,seps2);
   }

   strcpy(string,"a,");
   strcpy(seps1,",");strcpy(seps2,"");
   printf("\n[%s]\nTokens:\n",string);
   token=zzstrtok(string,seps1,seps2);
   while (token!=NULL) {
      printf(" <%s>",token);
      token=zzstrtok(NULL,seps1,seps2);
   }

   strcpy(string,",a,,b");
   strcpy(seps1,",");strcpy(seps2,"");
   printf("\n[%s]\nTokens:\n",string);
   token=zzstrtok(string,seps1,seps2);
   while (token!=NULL) {
      printf(" <%s>",token);
      token=zzstrtok(NULL,seps1,seps2);
   }

   strcpy(string,",,a,,b,,");
   strcpy(seps1,",");strcpy(seps2,"");
   printf("\n[%s]\nTokens:\n",string);
   token=zzstrtok(string,seps1,seps2);
   while (token!=NULL) {
      printf(" <%s>",token);
      token=zzstrtok(NULL,seps1,seps2);
   }

   strcpy(string,",");
   strcpy(seps1,",");strcpy(seps2,"");
   printf("\n[%s]\nTokens:\n",string);
   token=zzstrtok(string,seps1,seps2);
   while (token!=NULL) {
      printf(" <%s>",token);
      token=zzstrtok(NULL,seps1,seps2);
   }

   strcpy(string,",,");
   strcpy(seps1,",");strcpy(seps2,"");
   printf("\n[%s]\nTokens:\n",string);
   token=zzstrtok(string,seps1,seps2);
   while (token!=NULL) {
      printf(" <%s>",token);
      token=zzstrtok(NULL,seps1,seps2);
   }

   strcpy(string,",,,");
   strcpy(seps1,",");strcpy(seps2," ");
   printf("\n[%s]\nTokens:\n",string);
   token=zzstrtok(string,seps1,seps2);
   while (token!=NULL) {
      printf(" <%s>",token);
      token=zzstrtok(NULL,seps1,seps2);
   }
}
//
//[A      string          of ,,tokens
//
//and some  more tokens,]
//Tokens:
// <A>, <string>, <of>, <>, <tokens>, <>, <and>, <some>, <more>, <tokens>, <>,
//[1234| LIYI|China | 010 |201110260000|OK]
//Tokens:
// <1234>, <LIYI>, <China>, <010>, <201110260000>, <OK>,
//[1234|LIYI||010|201110260000|OK]
//Tokens:
// <1234>, <LIYI>, <010>, <201110260000>, <OK>,
//[1234|LIYI||010|201110260000|OK]
//Tokens:
// <1234>, <LIYI>, <>, <010>, <201110260000>, <OK>,
//[a]
//Tokens:
// <a>,
//[a,b]
//Tokens:
// <a>, <b>,
//[a,,b]
//Tokens:
// <a>, <>, <b>,
//[,a]
//Tokens:
// <>, <a>,
//[a,]
//Tokens:
// <a>, <>,
//[,a,,b]
//Tokens:
// <>, <a>, <>, <b>,
//[,,a,,b,,]
//Tokens:
// <>, <>, <a>, <>, <b>, <>, <>,
//[,]
//Tokens:
// <>, <>,
//[,,]
//Tokens:
// <>, <>, <>,
//[,,,]
//Tokens:
// <>, <>, <>, <>,
#include <stdio.h>
#include <string.h>
#include <locale.h>
char s[256];
char *p;
int r,n,i;
int main() {
    setlocale(LC_ALL,"chs");
    while (1) {
        printf("请输入一行文字(空行结束),\"%%20\"将替换为\" \",\"你懂得\"将替换为\"XXXXXX\":\n");
        fgets(s,256,stdin);
        if ('\n'==s[0]) break;
        p=s;
        while (1) {
            p=strstr(p,"%20");
            if (p) {
                memmove(p+1,p+3,strlen(p)-3+1);
                p[0]=' ';
            } else break;
        }
        p=s;
        while (1) {
            p=strstr(p,"你懂得");
            if (p) {
                memmove(p+6,p+6,strlen(p)-6+1);
                for (i=0;i<6;i++) p[i]='X';
            } else break;
        }
        printf("%s",s);
    }
    return 0;
}
//请输入一行文字(空行结束),"%20"将替换为" ","你懂得"将替换为"XXXXXX":
//abcdefg%20helloworld%20something.pdf
//abcdefg helloworld something.pdf
//请输入一行文字(空行结束),"%20"将替换为" ","你懂得"将替换为"XXXXXX":
//这是测试文字你懂得,在这个你懂的地方,就得做你懂得的事
//这是测试文字XXXXX,在这个你懂的地方,就得做XXXXX的事
//请输入一行文字(空行结束),"%20"将替换为" ","你懂得"将替换为"XXXXXX":
//
代码下载地址: https://pan.quark.cn/s/b305bf8625c2 ### 色差评估的RGB三原色方法#### 一、引言在出版与包装制造行业中,色彩的精确性具有核心意义。为了保障产品的色彩表现力,必须对不同的印刷样本进行精确的色差测量与评价。常规的色差评估手段往往涉及较为繁琐的运算步骤,例如将色彩数据映射至CIELAB色彩体系并计算色差(ΔE)。然而,此类运算方式在实际操作中可能遭遇效率瓶颈,特别是在要求即时监测与修正的制造环境里。因此,开发更为简便且高效的色差计算途径成为学术探讨的关键点。#### 二、基于RGB三原色的色差计算基础RGB色彩体系属于一种加色理论,主要应用于显示类设备。该体系立足于三种基本色光:红色(Red)、绿色(Green)以及蓝色(Blue)。尽管在印刷行业CMYK色彩模型占据主导地位,RGB色彩体系同样可用于色差评估。##### 计算机制在RGB色彩体系内,每种色彩均可通过三个数值(R,G,B)进行表示,各数值的取值区间为0至255。色差可通过对比两个色彩的RGB数值来确定。经典的方法是运用欧几里得距离公式来计算两点间的间隔:\[ \Delta E_{RGB} = \sqrt{(R_2 - R_1)^2 + (G_2 - G_1)^2 + (B_2 - B_1)^2} \]其中,\(R_1, G_1, B_1\) 和 \(R_2, G_2, B_2\) 分别代表两种色彩在RGB坐标系中的坐标值。这种计算途径具有操作便捷、耗时短的特点,但在准确性方面或许不及更复杂的色差计算方式,例如CIELAB模型所提供的色差评估方案。#### 三、RGB色差计算方法的优化方案为了提升RGB色差计算的精确度,同时维持其运算速度的优势,...
内容概要:本文详细介绍了一个基于灰色预测模型(GM)的电动汽车(EV)充电负荷预测项目,利用MATLAB实现从数据生成、预处理、建模到预测输出与结果可视化的完整流程。核心模型采用GM(1,1),通过对原始负荷序列进行一次累加生成(AGO)以削弱随机扰动,建立白化微分方程并使用最小二乘法估计参数,进而实现对未来充电负荷的趋势外推。项目强调在小样本、数据不完整和高波动场景下的适用性,结合后验差比、残差分析等指标评估模型精度,并提供了可扩展的增强机制如滚动更新、残差修正与季节性分解。整个系统具备良好的工程落地能力,支持部署于充电站运营、配电网规划、园区能源管理及车网互动等实际应用场景。; 适合人群:具备一定数据分析或电力系统背景,熟悉MATLAB编程,从事电动汽车、智能电网、能源管理系统研发或运营的技术人员,以及高校相关专业研究生和科研人员。; 使用场景及目标:①解决充电负荷数据样本短、噪声多、规律不稳定导致的传统模型难以建模的问题;②为充电站运营优化、配电网容量规划、园区微电网协同控制和城市交通能源联动提供短期负荷预测支持;③构建可解释性强、实现成本低、易于维护的预测原型系统,服务于科研实验与工程落地双重需求。; 阅读建议:此资源以MATLAB为实现平台,代码结构清晰且每一步均有数学原理对应,建议读者结合文中提供的示例代码动手复现,并尝试应用于真实充电负荷数据;重点关注数据预处理、AGO变换、参数估计与逆累加还原等关键环节,同时根据实际业务需求探索残差修正、滚动预测等增强策略的应用效果。

65,212

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧