在C#中替换字符串的一部分?

弗雷德

在我的游戏中,我有玩家所穿衣服的身分代码,例如...

hd-185-1.ch-235-1408.lg-3116-85-1408.ha-1002-1408.sh-3115-1408-1408.ca-1805-64.
hd-185-12.ch-235-1408.lg-3116-85-1408.ha-1002-1408.sh-3115-1408-1408.ca-1805-64.
hr-165-52.hd-205-30.ca-1802-63.wa-2012-1408.lg-270-63.ha-3655-0.ch-806-1412.sh-305-110.he-1601-0

hd代表头,ha代表头发,sh代表鞋子,lg代表腿,等等。.我正在尝试通过替换部分字符串来替换球员露面的肤色...

这是我尝试过的...

public string GetHead()
{
    return FigureCode.Split('.').FirstOrDefault(x => x.StartsWith("hd"));
}

public void UpdateSkin(string skinCode)
{
    var headPart = GetHead();

    if (string.IsNullOrEmpty(headPart))
    {
        return;
    }

    var skin = headPart.Split('-')[2];

    FigureCode = FigureCode.Replace(headPart, headPart.Replace(skin, skinCode));
}

这可以与该问题的第一个数字代码示例(IE hd-185-1.ch-235-1408.lg-3116-85-1408.ha-1002-1408.sh-3115-1408-1408.ca-1805-64.)一起使用,但其余的都弄乱了,有人可以理解为什么吗?我做错什么了吗,替换了重复的ID?

数字代码可以是每个用户通常具有完全不同的代码。

清扫器

我认为正则表达式解决方案将适合此处:

Regex.Replace(
    FigureCode,
    "(hd-\\d+-)\\d+", 
    "${1}" + skinCode) 

这基本上是找到一个匹配的子字符串(hd-\d+-)\d+(hd,后跟“-”,然后是数字,再由“-”,然后是另一个数字),并将其替换为第1组(hd-\d+-)的所有内容以及您的皮肤代码。

记住要using System.Text.RegularExpressions

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章