• 替换字符串中的空格


    问题描述:

    请实现一个函数,把字符串中的每个空格替换为“%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--;
        }
    }

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

    生命在于折腾,生活就是如此的丰富多彩
  • 相关阅读:
    SEO优化---学会建立高转化率的网站关键词库
    从一个程序员的角度看——微信小应用
    当AngularJS POST方法碰上PHP
    angularJS(6)
    彻底解决显示Opencv中Mat图像到Mfc窗口问题
    数据结构与算法基础总结
    java类别问题
    java基础知识
    逻辑地址、线性地址、物理地址和虚拟地址的区别
    TCP协议中的三次握手和四次挥手(图解)
  • 原文地址:https://www.cnblogs.com/Mr-Zhong/p/4118992.html
Copyright © 2020-2023  润新知