小编Bri*_*gey的帖子

如何替换字符串中的令牌对?

蟒蛇新手,能胜任几种语言,但看不出做"以下"的"时髦"方式.我敢肯定它正在为一个正则表达式大喊大叫,但我能想到的任何解决方案(使用正则表达式组和其他方法)都会很快变得疯狂.

所以,我有一个类似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做,等等,等等,但是我没有写软件,我只是扭转它的输出!

python regex token

6
推荐指数
1
解决办法
1497
查看次数

用于从文件中读取字符串的编码?

我正在解析包含字符串的文件(我不生成).字符串总是以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有关,但我不确定为什么或如何处理它.

任何建议都非常感谢!

c# string encoding binary-data character-encoding

3
推荐指数
1
解决办法
2042
查看次数

如何“重建”腐烂的**char?

以下代码是我的较大程序的简化版本,用于演示问题。

#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)

c void-pointers

0
推荐指数
1
解决办法
51
查看次数