删除文本中的空格和回车


/* THE PROGRAM IS MADE BY PYY */
/*----------------------------------------------------------------------------//
Copyright (c) 2011 panyanyany All rights reserved.

URL : http://acm.hdu.edu.cn/showproblem.php?pid=1277
Name : hdu 1277 ( 全文检索 )

Date :
Time Stage :

Result:

Test Data:

Review:

此程序为将记事本中的空格,回车,制表符删除。

1. 记事本中 ANSI 编码和 UINCODE 并存。比如,有两种空格模式,遇到 ' ' 时,是ANSI
的空格模式,遇到 ' ' 时,是中文空格模式,上一种也叫做半角模式,下一种也叫做
全角模式。
  而对于 '\t' 和 '\n' 则无此区分。
  因此需要在判断的时候加入全角空格的判断,其值为 -95,不过,会出现这样的情况,
比如在一句话的结尾,往往有这样的符号 '!”' (单引号内的为两个连续的中文符号),
全角的 '!' 低字节和 全角的 '”' 高字节均为 -95,即那两个连续中文字符的内存编码
为: -93,-95,-95,-97, 若在写程序的时候,一味地根据 -95 的特征来判断,则会出现把
中间那两个字节删除的情况,剩下的两个字节将组成新的全角字符 '1'。
  因此,为了避免这种情况的发生,我想出的方法就是在遇到中文字符或全角字符的第
一个字节时(此字节的值小于0且不等于-95),便紧接着读取下一个字节到输出文件中
  比如,在遇到上述的'!”'两个字符时,程序先遇到了-93,则判断其为中文或全角
字符,于是紧接着将-95也输出到文件中。如此一来便不会出现如上所述的误判的情况了。

2. 还有一个问题是,我使用VC6.0进行编程的时候,在有 '//(2)' 标记的位置,我是先
有这么句话的 t = fgetc (in) ; 然后才将 t == -95 放在判断位置。一开始我曾试着
把它们整合成一句话,即:if (fgetc (in) == -95) ,但我发现这样是行不通的,程序
会无法进行第二个 -95 的判断,从而使这段清除全角空格的语句失效。但是,如果改成
if ((t = fgetc (in)) == -95) 则程序能正常使用。这是个很奇怪的问题,我一直无法
搞明白,希望有人能指点一二,不胜感激!

//----------------------------------------------------------------------------*/

#include <stdio.h>
#include <stdlib.h>

#define ISSPACE(c) ((c) == '\t' || (c) == ' ' || (c) == '\n' || (c) == '\r')

char text[100000] ;

int main ()
{
FILE *in, *out ;

int i ;
char c = 0, t ;
in = fopen ("in.txt", "r") ;
out = fopen ("out.txt", "w") ;

while (!feof (in))
{
c = fgetc (in) ;
// printf ("%d, ", c) ;

if (!ISSPACE (c))
{
if (c == -95)
{
// printf ("c == -95 ") ;
t = fgetc (in) ;
if (t == -95) // (2)
{
// printf ("&& fgetc == %d \n", t) ;
continue ;
}
fseek (in, -1, SEEK_CUR) ;
// printf ("fgetc != -95\n") ;
}
// printf ("%d", c) ;
fputc (c, out) ;
if (c < 0) // 将中文字符或全角字符的第二个字节也一并输出到文件中
fputc (fgetc (in), out) ;
}
// system ("pause") ;
}

fclose (in) ;
fclose (out) ;

return 0 ;
}
### 回答1: 可以使用Excel的“查找和替换”功能来删除换行空格。具体步骤如下: 1. 选需要删除换行空格的单元格或区域。 2. 在Excel菜单栏选择“编辑”,然后选择“查找和替换”。 3. 在“查找和替换”对话框,将光标放在“查找”文本。 4. 按下“Ctrl”和“J”键,这将在文本输入一个换行符。 5. 将光标放在“替换为”文本,然后按下“空格键”。 6. 点击“全部替换”按钮,Excel将删除所有换行空格。 7. 点击“关闭”按钮,完成操作。 ### 回答2: 在Excel删除换行空格可以通过以下步骤进行: 1. 打开Excel文件,并选你想要进行操作的单元格区域。 2. 在Excel菜单栏选择“查找和替换”选项(一般位于“开始”或“编辑”菜单)。 3. 在弹出的对话框,在“查找”文本输入回车符号和空格,对应的分别是“^l”和“ ”(一个空格)。 4. 在“替换为”文本输入空格,或者留空以删除回车符号和空格。 5. 点击“替换全部”或“替换”按钮完成替换操作。 6. 完成后关闭“查找和替换”对话框,回到你的Excel工作表,你会发现换行空格已经被删除。 另外,如果你只想删除换行符号或者只想删除空格,可以根据具体需求在“查找”文本输入相应的符号进行操作。 ### 回答3: 要删除Excel换行空格,在Excel有几种方法可以实现。 1.使用“查找和替换”功能: - 首先,选你想要删除换行空格的区域; - 使用快捷键Ctrl + H,打开“查找和替换”对话框; - 在“查找”框输入换行符(Ctrl + J)和空格符(空格键),然后在“替换”框留空; - 点击“全部替换”按钮,Excel会自动删除选定区域的所有换行空格。 2.使用函数TRIM: - 假设你的数据位于A列,从A1开始,你可以在B1单元格使用如下公式:=TRIM(A1); - 然后将公式拖拽到所有需要删除空格的单元格上; - 最后,选B1到Bn(n是你的数据行数)单元格,右键单击并选择“复制”; - 选A1单元格,右键单击并选择“粘贴值”,这样就可以把删除空格后的数据覆盖原始数据。 3.使用文本函数SUBSTITUTE和CLEAN: - 假设你的数据位于A列,从A1开始,你可以在B1单元格使用如下公式:=SUBSTITUTE(CLEAN(A1),CHAR(10),""); - 然后将公式拖拽到所有需要删除换行空格的单元格上; - 最后,选B1到Bn(n是你的数据行数)单元格,右键单击并选择“复制”; - 选A1单元格,右键单击并选择“粘贴值”,这样就可以把删除换行空格后的数据覆盖原始数据。 通过以上方法,你可以轻松删除Excel换行空格,使数据更加整洁和规范。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值