❶ C語言實驗題——字元過濾
可以執行
#include<stdio.h>
#include<string.h>
int main()
{
void qu(char *c1,char c2);
int n,i,a,b;
char str[10000],s[10000];
gets(str);
gets(s);
a=strlen(str);
b=strlen(s);
for(i=0;i<b;i++)
qu(str,s[i]);
puts(str);
return 0;
}
void qu(char *c1,char c2)
{
int i,a,b,s=0;
char c[10000];
a=strlen(c1);
for(i=0;i<a;i++)
if(c2!=c1[i])
{
c[s]=c1[i];
s++;
}
c[s]='\0';
for(i=0;i<=s;i++)
c1[i]=c[i];
}
❷ VC 過濾字元串內特殊符號的函數 比如雙引號
\n ------------------------- 換行
\r ------------------------- 回車
\t ------------------------- 製表符
\b ------------------------- 退格
\f ------------------------- 換頁
\0 ------------------------- 空符號
\" ------------------------- 雙引號
\'''' -------------------------單引號
\\ -------------------------反斜杠
\t 橫向跳到下一製表位置
\v 豎向跳格
\b 退格
\f 走紙換頁
\a 鳴鈴
註:
有些 ASCII 字元是不可列印的。例如退格、另起一行、警報等。C 語言提供了兩種方法來表示這種不可列印字元。
第一種方法是使用 ASCII 編碼。例如,ASCII 編碼中,7 用於表示警報:
char beep = 7;
第二種方法是使用特殊符號序列,也就是所謂的轉義字元(escape sequences)。參見下表:
轉義字元 含義
\a 警報( Alert (ANSI C) )
\b 退格(Backspace)
\f 換頁(Form feed)
\n 換行(Newline)
\r 回車(Carriage return)
\t 水平製表符(Horizontal tab)
\v 垂直製表符(Vertical tab)
\\ 反斜桿( Backslash (\) )
\' 單引號( Single quote (') )
\" 雙引號( Double quote (") )
\? 問號( Question mark (?) )
\0oo 八進制數( Octal value (o 代表一個八進制數字) )
\xhh 十六進制數( Hexadecimal value (h 代表一個十六進制數字) )
給變數賦值的時候,轉義字元必須使用單引號引住。例如:
char nl = '\n';
下面我們詳細學習每個轉移字元的含義。
\a(警報)是 ANSI C89 添加的,用於產生可聽或者可視的警報。\a 產生的效果取決於硬體。一般來說,輸出 \a 會產生鳴響。但是在某些系統,輸出 \a 不會產生任何效果,或者僅僅顯示一個特殊字元。標准明確指出,\a 不應該改變當前活躍位置(active position)。所謂活躍位置,是指顯示設備(顯示器、打字機、列印機等等)顯示下一個字元的位置。以顯示器為例,活躍位置就是指游標所處的位置,輸出 \a 不會導致游標移動位置。
\b、\f、\n、\r、\t,以及 \v 都是輸出設備控制符。退格符(\b)使當前行的活躍位置後退一個位置。換頁符(\f)使活躍位置跳到下一頁的開端。註:換頁符可用於控制列印機換頁,但不會導致 PC 機的顯示屏換頁。換行符(\n)使活躍位置跳到下一行的開端。回車符 ( \r ) 使活躍位置返回當前行的開端。水平製表符(\t)使活躍位置移動若干個位置(通常是8個)。垂直製表符(\v)使活躍位置換若干行。註:\v可用於控制列印機換若干行,但是不會導致PC機的顯示屏換行。
\\、\',以及 \" 使我們可以把 \,' 和 " 用作字元常量。如果要列印以下句子:
"\ is called 'backslash'."
我們需要使用如下語句:
printf("\"\\ is called \'backslash\'.\"");
或者
printf("\"\\ is called 'backslash'.\"");
注意,在字元串字面量中,無論寫 \' 還是 ',輸出都是一樣的。但是,在給字元變數賦值時,一定要寫 \'。例如:
char ch = '''; /* 錯誤! */
char ch = '\''; /* 正確。 */
\0oo 和 \xhh 是ASCII碼的兩種特殊表示形式。如果想用八進制ASCII碼表示字元,可以在八進制數前面加上 \ ,然後用單引號引起來。例如:
beep = '\007'; /* \007 代表 \a */
打頭的那些0可以省略,也就是說,寫成 '\07' 或者 '\7' 都一樣。無論有沒有打頭的0 ,7 都會被當成八進制數處理。
從 C89 開始,C提供了用十六進製表示字元常量的方法:在反斜桿後面寫一個 x ,然後再寫 1 到 3 個十六進制數字。例如:
nl = '\xa'; /* \xa 代表 \n */
注意:使用ASCII碼時,要注意區分數字和數字字元。例如:字元4的ASCII碼是52 ,'4' 代表字元 4 ,而不是數字4。此外,盡管 '\n' 和 '\xa' ,'\a' 和 '\007' 是等價的,但是我們應該盡可能使用 '\n' 和 '\a' ,而不要用 '\xa' 和 '\007' 。這是因為前者易懂、便於記憶,而且移植性更高。而後者只對使用ASCII碼的系統有效。
參考資料:C Primer 5th Edition
❸ 過濾字元串 輸入一個字元串,過濾此串,只保留串中的字母字元,並統計新生成串中包含的字母個數
importjava.util.Scanner;
publicclassTest{
publicstaticvoidmain(String[]args){
Scannersc=newScanner(System.in);
System.out.println("請輸入一串字元");
Stringstr=sc.nextLine();
StringstrFilter=filter(str);
System.out.println("過濾後:"+strFilter+" 字母個數:"+strFilter.length());
sc.close();
}
privatestaticStringfilter(Stringstr){
StringBuffersb=newStringBuffer("");
for(inti=0;i<str.length();i++){
charc=str.charAt(i);
if((c>=65&&c<=90)||(c>=97&&c<=122))
sb.append(c);
}
returnnewString(sb);
}
}
❹ c語言如何過濾去非16進制的字元
||#include<stdio.h>
void main()
{
char str[100];
int t,i=0;
printf("請輸入一個字元串\n");
gets(str);
for(t=0;str[t]!版='\0';t++)
if(('A'<=str[t]&&str[t]<='F')||權('a'<=str[t]&&str[t]<='f')||('0'<=str[t]&&str[t]<='9'))
str[i++]=str[t];
str[i]=0;
printf("%s\n",str);
}
❺ c語言初學 如何過濾字元串中除了字母與數字中的字元 例如我輸入123abcABC!@#123 輸
只能說找出數字0到9和字母a到z,這個得用到字元串函數(比如char *strpbrk(char *str1, char *str2);),因為專在編程語言中,只認字屬符,而你所提到的其他符號都是字元,計算機是無法區別的。
❻ C# 實現字元串的過濾重復字元(不管連續不連續),例如:輸入,1212324,結果輸出,1234
string str = "1212324";
Dictionary<char,bool> dict = new Dictionary<char,bool>();
foreach(char c in str)
dict[c]=true;
StringBuilder sb = new StringBuilder(dict.Count);
foreach(var kv in dict)
sb.Append(kv.Key);
return sb.ToString();