使用C#清除字符串结尾的数字的方法参考

        假如我们要复制一个物体,一般我们希望复制出来的物体与原来的物体名字不同,而且最好是结尾加上序号,比如原始物体叫abc,那么复制出来的物体叫abc0001。

        问题是如果物体本来已经带序号了,比如已经叫abc0005了,那就不应该在后面加上额外的序号了,因为如果abc0005额外添加序号就成了abc00050001了。

        最好是把原来的序号去掉,再原始序号的基础上再增加不同的序号,参考代码如下:

	public SelObj3D CloneSelObj3D(SelObj3D selObj3D)
	{
		if (selObj3D == null) return null;

		GameObject objInit = selObj3D.gameObject;
		GameObject obj = Instantiate(objInit);
		string objName = Regex.Replace(objInit.name, @"\d+$", "");
		obj.transform.SetParent(parentObj3D);
		Vector3 offset = selObj3D.bounds.size;
		offset *= 0.1f;
		offset.y = 0;
		obj.transform.position = selObj3D.transform.position + offset;
		int index = 1;
		string newName = objName + index.ToString("D4");
		while (true)
		{
			bool nameExits = false;
			foreach (SelObj3D s in listSelObj3D)
			{
				if (s.name == newName)
				{
					nameExits = true;
					index++;
					break;
				}
			}
			newName = objName + index.ToString("D4");
			if (!nameExits)
			{
				break;
			}
		}
		obj.name = newName;
		SelObj3D so = obj.GetComponent<SelObj3D>();
		AddSelObj3D(so);
		return so;
	}

        关键是下面这行使用了正则表达式的代码:

string objName = Regex.Replace(objInit.name, @"\d+$", "");

        需要用到的命名空间是:

using System.Text.RegularExpressions;

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值