我收到了一个包含以下字符的文件:à,è,ì,ò,ù - À.我需要做的是用普通字符替换那些字符,例如:à= a,è= e等......这是我的代码到目前为止:
StreamWriter sw = new StreamWriter(@"C:/JoinerOutput.csv");
string path = @"C:/Joiner.csv";
string line = File.ReadAllText(path);
if (line.Contains("à"))
{
string asAscii = Encoding.ASCII.GetString(Encoding.Convert(Encoding.UTF8, Encoding.GetEncoding(Encoding.ASCII.EncodingName, new EncoderReplacementFallback("a"), new DecoderExceptionFallback()), Encoding.UTF8.GetBytes(line)));
Console.WriteLine(asAscii);
Console.ReadLine();
sw.WriteLine(asAscii);
sw.Flush();
}
Run Code Online (Sandbox Code Playgroud)
基本上,这会在文件中搜索特定字符,并将其替换为另一个字符.我遇到的问题是我的if语句不起作用.我该如何解决这个问题?
这是输入文件的示例:
Dimàkàtso Mokgàlo Màmà Ràtlàdi Koos Nèl Pàsèkà Modisè Jèrèmiàh Morèmi Khèthiwè Buthèlèzi Tiànà Pillày Viviàn Màswàngànyè Thirèshàn Rèddy Wàdè Cornèlius ènos Nètshimbupfè
如果使用,则输出为:line = line.Replace('à','a'); :
Ch�rl�n� Kirst�n M�m� R�tl�di Koos N�l P�s�k� Modis� J�r�mi�h Mor�mi Kh�thiw� Buth�l�zi Ti�n� Pill�y Vivi�n M�sw�ng�ny� …
我已经看过很多关于URL路由的讨论,以及很多很棒的建议......但在现实世界中,我没有看过的一件事是:
假设你正在建立一个医疗网站,里面有文章用类别和可选的子类别.(1对多).(可以使用任何一个例子,但医学领域有很多长话)
在这样的结构中,如果你去,你将会有一些LOOONG网址:/ {Category}/{subcategory}/{Article Title}
此外,还有很多非法字符,比如#!?'é"等
注意:我总是看到漂亮的漂亮例子,如/ products/beverages/Short-Product-Name /如何处理一些丑陋的例子^ _ ^
当比较"Île"和"Ile"时,C#并不认为它们是相同的.
string.Equals("Île", "Ile", StringComparison.InvariantCultureIgnoreCase)
Run Code Online (Sandbox Code Playgroud)
对于我遇到的所有其他重音字符,比较工作正常.
我应该使用另一种比较功能吗?
我有一堆用户生成的地址,可能包含带变音符号的字符.什么是最有效(即通用)的方式(除了简单的替换)自动将任何这样的字符转换为最接近的英语等价物?
例如,任何一个人都会变成一个
æ会成为两个独立的字母ae
ç将成为c
任何èéêë都会成为e
等等所有可能的字母变化(最好不必查找和编码字母的每个变音形式的查找).
(注意:我必须将这些地址传递给第三方软件,该软件无法打印除英文字符以外的任何内容.我宁愿该软件能够处理它们,但我无法控制它.)
编辑:没关系......找到答案[这里] [2].在我发布之后,它出现在问题右侧的"相关"部分,但不是在我之前的搜索中或作为事前建议.嗯.在任何情况下,我都将'diacritics'标签添加到另一个问题中.
编辑2:Jeez!关闭之后谁投票了-1?
SQL Server中是否有一个函数来规范化unicode字符串?例如
UPDATE Orders SET Notes = NormalizeString(Notes, 'FormC')
Run Code Online (Sandbox Code Playgroud)
Unicode规范化表单:
A+ ¨变ÄÄ变为A+¨A+ ¨+ ?+ n变为Ä+ f+ i+nÄ+ ?+ n变为A+ ¨+ f+ i+n我找不到任何内置函数,所以我假设没有.
理想情况下,如果只有一个,那么我今天碰巧需要表格C:
Unicode规范化形式C,规范组合.将每个分解的分组(由基本字符加组合字符组成)转换为规范的预组合等效项.例如,A +¨变为Ä.
sql-server globalization unicode internationalization sql-server-2008-r2
我正在开发一种用于自动语言检测的启发式算法,并想知道给定的字母是否具有变音符号(例如"ÐàäèîÊóëüòóðà" - 所有字母都有变音符号).如果可能的话,我最好能得到变音符号的类型.
我浏览了UnicodeCategoryenum,但没有找到任何可以帮助我的东西.
"strasse".Equals("STRAße",StringComparison.InvariantCultureIgnoreCase)
Run Code Online (Sandbox Code Playgroud)
这返回真。哪个是正确的。不幸的是,当我将其中一个存储在 postgres 中时,它认为在进行不区分大小写的匹配(例如, with ~*)时它们不一样。我也用 citext 测试过。
因此,一种解决方案是预先折叠案例,从而将strasse这些值中的任何一个存储在另一列中。然后我可以索引并搜索匹配项。
我一直在寻找如何在 C# 中折叠 case 一段时间,但一直无法在 C# 中找到解决方案。显然,知识是存在的,因为它可以正确比较这些字符串,我只是找不到从哪里获取它。
一种解决方案是生成一个 perl 进程perl -E "binmode STDOUT, ':utf8'; binmode STDIN, ':utf8'; while (<>) { print fc }",将进程的 C# 端也设置为这些管道的 utf8,然后通过 perl 发送文本以折叠案例。但必须有比这更好的方法。
我有20个左右的字符,我需要用一个文本块中的各种其他字符替换.有没有办法在单个正则表达式中执行此操作,这个正则表达式是什么?或者在.NET中有更简单的方法吗?
例如,我的映射表的摘录是
œ=>oež
=>
zŸ=>
YÀ=>
AÁ=>
AÂ=>
AÃ=>
AÄ=> AE
我有例如
string str ='Àpple';
string strNew="";
char[] A = {'À','Á','Â','Ä'};
char[] a = {'à','á','â','ä'};
Run Code Online (Sandbox Code Playgroud)
我想通过str查看是否找到替换为Ascii代码'A'.所以结果应该是:
strNew = 'Apple';
Run Code Online (Sandbox Code Playgroud)
这是我的代码:
for (int i = 0; i < str.Length; i++)
{
if(str[i].CompareTo(A))
strNew += 'A'
else if(str[i].CompareTo(a))
strNew +='a'
else
strNew += str[i];
}
Run Code Online (Sandbox Code Playgroud)
但是比较功能不起作用,那么我可以使用哪些其他功能呢?
我正在与“ 信任商务指南”一起工作,以了解如何生成付款令牌,该令牌将允许客户使用TC Trustee Host付款表格。他们的开发团队为我提供了有关如何检索此令牌的示例。
using System;
using System.Net;
using System.IO;
using System.Text;
using System.Collections;
using System.Web;
/** @class TCToken
* An example class for generating a TrustCommerce Trustee Token
*/
public class TCToken
{
public static void Main(string [] args)
{
string custid = "123456";
string password = "XXXXXX";
try {
// Adapted from http://www.west-wind.com/presentations/dotnetWebRequest/dotnetWebRequest.htm
string gateway_post_address = "https://vault.trustcommerce.com/trustee/token.php";
HttpWebRequest req = (HttpWebRequest) WebRequest.Create(gateway_post_address);
// A sixty second timeout.
req.Timeout = 60000;
string post_data = "custid=" + HttpUtility.UrlEncode(custid) + …Run Code Online (Sandbox Code Playgroud) c# ×8
diacritics ×2
string ×2
unicode ×2
.net ×1
ascii ×1
asp.net ×1
case-folding ×1
character ×1
compare ×1
culture ×1
regex ×1
routing ×1
sql-server ×1
url ×1