蟒蛇新手,能胜任几种语言,但看不出做"以下"的"时髦"方式.我敢肯定它正在为一个正则表达式大喊大叫,但我能想到的任何解决方案(使用正则表达式组和其他方法)都会很快变得疯狂.
所以,我有一个类似html标签的字符串,我想用实际的html标签替换.
例如:
Hello, my name is /bJane/b.
Run Code Online (Sandbox Code Playgroud)
应该成为:
Hello, my name is <b>Jane</b>.
Run Code Online (Sandbox Code Playgroud)
它可能与[i] talic和[u] nderline组合:
/iHello/i, my /uname/u is /b/i/uJane/b/i/u.
Run Code Online (Sandbox Code Playgroud)
应该成为:
<i>Hello</i>, my <u>name</u> is <b><i><u>Jane</b></i></u>.
Run Code Online (Sandbox Code Playgroud)
显然,直接的str.replace不起作用,因为每个第二个令牌都需要在前进中.
为清楚起见,如果令牌正在组合,它总是首先打开,首先关闭.
非常感谢!
PS:在任何人兴奋之前,我知道这种事情应该用CSS做,等等,等等,但是我没有写软件,我只是扭转它的输出!
我正在解析包含字符串的文件(我不生成).字符串总是以2个字节开头,告诉我后面的字符串的长度.
例如:
05 00 53 70 6F 72 74
Run Code Online (Sandbox Code Playgroud)
将会:
Sport
Run Code Online (Sandbox Code Playgroud)
使用C#BinaryReader,我使用以下方法读取字符串:
string s = new string(binaryReader.ReadChars(size));
Run Code Online (Sandbox Code Playgroud)
有时会出现奇怪的时髦角色,这似乎会推动流的位置超出应有的位置.例如:
0D 00 63 6F 6F 6B 20 E2 80 94 20 62 6F 6F 6B
Run Code Online (Sandbox Code Playgroud)
应该:
cook - book
Run Code Online (Sandbox Code Playgroud)
虽然它读得很好,但流最终会比它应该延伸两个字节?!(然后会弄乱其余的解析.)
我猜它与中间的0xE2有关,但我不确定为什么或如何处理它.
任何建议都非常感谢!
以下代码是我的较大程序的简化版本,用于演示问题。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
const int m = 5;
char **words1;
char **words2;
void f(void *v) {
printf("v: %p\n", v);
int len = v==words1 ? 3 : 4;
printf("len: %d\n", len);
for (int i=0; i<m; i++) {
// What goes here?
/*
char *c = malloc(sizeof(char) * len);
c = (char*)v; // Something _like_ this?!
printf("%s\n", c);
*/
}
}
int main(int argc, char *argv[]) {
words1 = malloc(m * sizeof(char*));
printf("%p\n", words1);
words2 = malloc(m * …
Run Code Online (Sandbox Code Playgroud)