从字符串中删除非ascii字符[英] Removing non-ascii characters from a string

问题描述

你好,

我相信.net中的所有字符串默认都是unicode,我正在寻找一个
从字符串中删除所有非 ascii 字符的方法(或可选
替换它们).

有一篇关于代码项目的文章看起来像它
我想要什么,但我不禁认为它比它更复杂
需要.

我已经查看了与编码有关的 msdn 页面,但我不是很
熟悉这个话题.

如果我能得到一个ASCII字符列表,那应该很容易写
一种根据列表检查每个字符并执行替换的方法
或必要时删除操作.但是我找不到任何确切的东西
像这样与可信赖的老谷歌一样,我有什么遗漏吗?.

如果它有助于我需要这个的原因是因为我正在编写前端
对于蹩脚的命令行mp3编码器,它不喜欢被传递,或者
要求输出到包含 unicode 字符的文件路径.

--
Eps

推荐答案

"Eps"<ms**********@epscylonb.com 在留言中写道
新闻:呃***************@TK2MSFTNGP05.phx.gbl...
你好,

我相信.net中的所有字符串默认都是unicode,我正在寻找一个
从字符串中删除所有非 ascii 字符的方法(或可选
替换它们).

有一篇关于代码项目的文章看起来像它
我想要什么,但我不禁认为它比它更复杂
需要.

我已经查看了与编码有关的 msdn 页面,但我不是很
熟悉这个话题.

如果我能得到一个ASCII字符列表,那应该很容易写
一种根据列表检查每个字符并执行替换的方法
或必要时删除操作.但是我找不到任何确切的东西
像这样与可信赖的老谷歌一样,我有什么遗漏吗?.

如果它有助于我需要这个的原因是因为我正在编写前端
对于蹩脚的命令行mp3编码器,它不喜欢被传递,或者
要求输出到包含 unicode 字符的文件路径.

也许我错过了这段代码:-

byte[] asciiChars = Encoding.ASCII.GetBytes("AB £ CD");
字符串结果 = Encoding.ASCII.GetString(asciiChars);
Console.WriteLine(结果);

创建字符串:-

乙?光盘

--
Anthony Jones - MVP ASP/ASP.NET

Anthony Jones 写道:
也许我错过了这段代码:-

byte[] asciiChars = Encoding.ASCII.GetBytes("AB £ CD");
字符串结果 = Encoding.ASCII.GetString(asciiChars);
Console.WriteLine(结果);

创建字符串:-

乙?光盘
我以前看过这段代码,谁能解释一下为什么
Encoding.ASCII.GetString() 方法不接受字符串作为参数 ?.

--
Eps

8 月 29 日下午 1:12*pm,Eps <msnewsgro...@epscylonb.com 写道:
* * byte[] asciiChars = Encoding.ASCII.GetBytes("AB £ CD");
* * 字符串结果 = Encoding.ASCII.GetString(asciiChars);
* * Console.WriteLine(结果);
创建字符串:-
乙?光盘

我以前看过这段代码,谁能解释一下为什么
Encoding.ASCII.GetString() 方法不接受字符串作为参数?
因为 Encoding 类对 CLR 字符串进行编码和解码(
_always_ Unicode) 到/从指定编码的字节数组,通常
用于序列化或互操作目的.世上没有非
Unicode System.String(好吧,您可以将字符串视为普通数组
char,但任何 .NET 函数仍会将字符串视为 UTF-16).

你问的还是可以的,因为ASCII是
的纯子集统一码.使用 LINQ,您可以使用以下单行:

string ascii = new string(s.Where(c =(int)c >= 0 && (int)c <=
127).ToArray());

然而请注意,"ascii"仍然是一个 Unicode 字符串 - 它只是
不会包含任何非 ASCII 字符.

本文地址:https://www.itbaoku.cn/post/1050790.html

相关标签/搜索