zoukankan      html  css  js  c++  java
  • 替换字符串中的空格

    问题描述:

    请实现一个函数,把字符串中的每个空格替换为“%20”。例如输入“Hello ZCM”,则输出“Hello%20ZCM”。

    思路分析:在网络编程中,如果URL参数中有特殊字符,如空格、’#’等,可能导致服务端无法获得正确的参数值。

    我们需要将这些特殊符号转换成服务器可以是别的字符。转换规则是在’%‘后面跟上ASII码的两位十六进制表示。

    此题只需转换空格。为了提高效率,我们可以县便利一次字符串,这样就能统计出字符串的空格总数和长度。我们假定

    存放字符串的数组足够长以便不需要辅助的存储空间。

    1使用两个指针。把第一个指向原字符串的末尾,第二个指向新字符串的末尾(’‘)处。

    2以此复制字符串的内容,知道第一个指针碰到第一个空格

    3把第一个空格替换为’%20‘,第一个指针向前移动一格,第二个指针向前移动三格

    4以此复制字符串中的字符,直至碰到空格

    5不断进行下去直到原字符串头部达到后

    参考源码:

    void ReplaceBlank(char string[],int length)//length为string的总容量
    {
        if (string == NULL || length <= 0)
        {
            return;
        }

        int nOriginalLenth = 0;
        int nNumberofBlank = 0;

        //获得字符串的长度和空格的个数
        while(string[nOriginalLenth] != '')
        {
            if (string[nOriginalLenth] == ' ')
            {
                nNumberofBlank++;
            }
            nOriginalLenth++;
        }
        //nOriginalLenth--;

        int nNewLength = nOriginalLenth + nNumberofBlank*2;

        if (nNewLength > length)
        {
            return;
        }

        int nIndexofOriginal = nOriginalLenth;
        int nNewIndex = nNewLength;

        while (nIndexofOriginal >= 0)//目前还没想通有何限制
        {
            if (string[nIndexofOriginal] == ' ')
            {
                string[nNewIndex--] = '0';
                string[nNewIndex--] = '2';
                string[nNewIndex--] = '%';
            }
            else
            {
                string[nNewIndex--] = string[nIndexofOriginal];
            }
            nIndexofOriginal--;
        }
    }

    思考:作为代码边界的开始和结尾的一定要考虑清楚,不然很容易出错。

    生命在于折腾,生活就是如此的丰富多彩
  • 相关阅读:
    UNITY 多个子MESH与贴图的对应关系
    UNITY 优化之带Animator的Go.SetActive耗时问题,在手机上,这个问题似乎并不存在,因为优化了后手机上运行帧率并未明显提升
    发现一个好办法-有问题可以到UNITY论坛搜索
    静态函数造成GC的原因
    关于GC.Collect在不同机器上表现不一致问题
    VULKAN学习资料收集
    Array.Resize(ref arry, size);
    玩游戏消耗精力
    浮点数与定点数问题
    P8 Visible Lattice Points
  • 原文地址:https://www.cnblogs.com/Mr-Zhong/p/4118992.html
Copyright © 2011-2022 走看看