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--;
        }
    }

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

    生命在于折腾,生活就是如此的丰富多彩
  • 相关阅读:
    实现Android ListView 自动加载更多内容
    Android中通过GPS或NetWork获取当前位置的经纬度
    android检测当前网络是否可用
    怎么样获得泛型T的Class对象?
    slidemenu
    linux mysql 操作命令
    解决Skyline 6.5版本中3DML模型单体化后外部网页挂接问题
    解决Skyline6.5多球对比时,自动运行TerraExplorer软件的问题
    OSGeo.OGR.Geometry
    TerraExplorer Add-ons 和TEZ使用说明
  • 原文地址:https://www.cnblogs.com/Mr-Zhong/p/4118992.html
Copyright © 2011-2022 走看看