替换空格

本文阐述了在软件开发过程中采用测试驱动开发(TDD)的方法论,并通过具体代码实例展示了如何编写单元测试用例,强调了测试前置的重要性,以及如何在解决实际问题时确保代码质量和稳定性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

以前我总是通过文件来输入测试用例,但是等到再看代码的时候总是不知道关键的步骤在哪里,也不知道是哪个数据出错了;用下面这种方法很方便;

一本书有言道“如果应聘者是先写单元测试用例,再写解决问题的函数,我相信面试官定会对你刮目相看,因为能做到测试在前、开发在后的程序员实在是太稀缺了,他会毫不犹豫地抛出绿色的橄榄枝。

#include <iostream>
#include <string.h>

//不要只顾算法 也要考虑限制条件 
using namespace std;
void replaceBlank(char * str)
{
    
    if(str == NULL)
        return ;
    //下面计算字符串的长度;
    //下面计算空格的个数;

    int len = 0;
    int numberOfBlank = 0;
    for(int i=0;str[i]!=0;i++) 
    {
        if(str[i]==' ')
             numberOfBlank++;
         len++;
    }
    if(len == 0)
        return ;
//    //2015年3月10日 09:16:532015年3月10日 09:17:032015年3月10日 09:17:062015年3月10日 09:17:082015年3月10日 09:17:092015年3月10日 09:17:12
//    printf("%s %d\n",str,len); 
    //计算最终字符串长度;
    int newLen = len + 2 * numberOfBlank;//包括结尾符号; 
    //下面开始从尾到头进行移动,直到两个下标一样的时候为止;
    str[newLen] = 0;
    int indexOfOld = len - 1 , indexOfNew = newLen - 1;
    
    while(indexOfOld != indexOfNew)
    {
        if( str[indexOfOld] != ' ')
        {
            str[indexOfNew] = str[indexOfOld];    
        }else{
            str[indexOfNew] = '0';
            str[--indexOfNew] = '2';
            str[--indexOfNew] = '%';
        }
        indexOfNew --;
        indexOfOld --;    

    }     
}
void Test(char * testNumber,char * oringialString,char * expectedString)//用来测试replaceBlank函数,由测试用例调用,而调用replaceBlank; 
{
    replaceBlank(oringialString);
    //printf("%s\n",oringialString);
    printf("%s ",testNumber);
    if(oringialString == NULL && expectedString == NULL)
        printf("passed\n");
    else
        
        if(strcmp(oringialString,expectedString) == 0)
            printf("passed\n");
        else
            printf("failed\n");
} 
void test1()
{
    const int len = 100;
    char str[len] = "helloWorld";
    Test("test1",str,"helloWorld");
}
void test2()
{
    const int len = 100;
    char str[len] = " helloWorld";
    Test("test2",str,"%20helloWorld");
}
void test3()
{
    const int len = 100;
    char str[len] = "helloWorld ";
    Test("test3",str,"helloWorld%20");
}
void test4()
{
    const int len = 100;
    char str[len] = "hello World";
    Test("test4",str,"hello%20World");
}
void test5()
{
    const int len = 100;
    char str[len] = "hello  World";
    Test("test5",str,"hello%20%20World");
}
void test6()
{
    const int len = 100;
    char str[len] = "hello  Wor ld";
    Test("test6",str,"hello%20%20Wor%20ld");
}
void test7()
{
    const int len = 100;
    Test("test7",NULL,NULL);
}
void test8()
{
    const int len = 100;
    Test("test8","","");
}
int main()
{
    /**/
    test1();
    test2();
    test3();
    test4();
    test5();
    test6();
    test7();
    test8();
    return 0;
}

 

### 三级标题:空格字符的替换方法 在使用 `REPLACE` 函数时,若需替换空格字符,需确保明确指定空格类型。普通空格(ASCII 32)与全角空格(ASCII 12288)在不同系统中表现不同,若未正确识别空格类型,可能导致 `REPLACE` 无法匹配目标字符[^1]。例如,在 MySQL 中替换普通空格可使用如下语句: ```sql SELECT REPLACE('Hello World', ' ', '_'); ``` 该语句将字符串中的普通空格替换为下划线 `_`。若字符串中包含全角空格或其他空白字符(如换行符、制表符),则需单独处理。可使用 `TRIM` 函数移除首尾空格,或在 MySQL 8.0 及以上版本中使用 `REGEXP_REPLACE` 进行正则表达式匹配和替换: ```sql SELECT REGEXP_REPLACE('Hello World', '\\s+', '_'); ``` 此语句将任意空白字符(包括普通空格、全角空格、换行符等)替换为下划线 `_`。 在编程语言中,如 Python、JavaScript 或 Java,同样可通过 `replace` 方法实现空格替换。例如,在 Python 中: ```python text = " Hello, World! " cleaned_text = text.replace(" ", "").strip() print(cleaned_text) ``` 该代码将字符串中的普通空格移除,并使用 `strip()` 去除首尾空白[^2]。若需替换所有空白字符(包括换行符、制表符等),可结合正则表达式: ```python import re cleaned_text = re.sub(r'\s+', '', text) ``` 在 JavaScript 中,也可使用正则表达式进行替换: ```javascript let str = '123AD asadf asadfasf\n adf\n'; let a = str.replace(/\s+/g, "&nbsp;"); console.log(a); ``` 此代码将所有空白字符替换为 `&nbsp;`[^3]。在 Java 中,可通过 `String.replace` 方法实现: ```java public class Solution { public String replaceSpace(String s) { return s.replace(" ", "%20"); } } ``` 该方法将普通空格替换为 `%20`[^4]。若需更复杂的替换逻辑,可使用 `StringBuffer` 或 `StringBuilder` 进行逐字符处理。 ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值