【发布时间】:2018-05-17 08:30:19
【问题描述】:
我得到一个日志文件,其中包含看起来像
的日志数据system%s disconnected: IP%s %s:%s,"1","100.100.100.100","port","1000"
Login by user %s,"TestUserName"
connecting to system%s,"29"
Newlog by %s on %s,"TestUser2","Wednesday"
我需要转换成哪个,
system1 disconnected: 100.100.100.100 port 1000
Login by user TestUserName
connecting to system29
Newlog by TestUser2 on Wednesday
到目前为止,我已将此字符串拆分为 2 个字符串,第 1 部分将包含带有格式说明符的字符串,第 2 部分将包含带有信息/数据的字符串。 例如:
1)
part1 = system%s disconnected: IP%s %s:%s
part2 = "1","100.100.100.100","port","1000"
2)
part1 = Login by user %s
part2 = "TestUserName"
3)
part1 = connecting to system%s
part2 = "29"
我想用 sprintf 来得到想要的输出,
sprintf(testString,"%s,%s", part1, part2);
printf(testString); //This doesn't work.
printf("system%s disconnected: IP%s %s:%s","1","100.100.100.100","port","1000"); //This works, but not sure of getting here
【问题讨论】:
-
有一组与
printf相关的函数,其名称以v开头,例如vsprintf,如果您事先不知道参数的数量,这很有用。跨度> -
如果您只有 %s(no%i、%d 等...),您可以循环并用第 2 部分中的 n 元素替换 n %s
-
谢谢。我也可能得到 %i(或)%d。
-
然后类似于
%[a-Z]正则表达式模式与','上的part2 拆分相结合可能会帮助您进行替换。正如@ArndtJonasson 所提到的,可能已经有一些功能可以做到这一点 -
@ArndtJonasson 谢谢,我正在努力寻找这些功能。