我想用其他字符替换输入字符串中的某些字符。
输入文本有Microsoft左右智能引号,我想将其转换为单个“。
我打算使用Replace操作,但是在编写要搜索的文本字符串时遇到了问题。
我想替换输入序列(十六进制)\ xE2809C,并将该序列更改为单个“。但与\ xE2809D同上。
如何构成要在Replace操作中使用的字符串?
我正在考虑(在一个循环中):
tempTxt = tempTxt.Replace(charsToRemove[i], charsToSubstitute[i]);
但是我在创建charsToRemove数组时遇到了麻烦。
可能更大的问题是,是否可以使用C#中的一些读/写和字符串转换读取整个输入文件并将其转换为纯ASCII。
谢谢,迈克
答案 0 :(得分:1)
这样的东西?
char [] charsToRemove = {
'\u201C', // These are the Unicode code points (not the UTF representation)
'\u201D'
};
char [] charsToSubstitute = {
'"',
'"'
};
答案 1 :(得分:0)
你可能想给Regex一个机会。这是一个用单个“。
替换智能引用文本的示例string tempTxt = "I am going to “test” this. “Hope” it works";
string formattedText = Regex.Replace(tempTxt, "s/“|”|“|”/", @"""");
答案 2 :(得分:0)
我正在使用ReqPro40.dll来读取数据。数据存储为文本。希望我下面的复制/粘贴没有太多损失。以下的东西据我所知。但我想摆脱更长的坏人物序列。 E2809C应该成为引用,但是我在匹配它时遇到了麻烦。
string tempTxt = Req.get_Tag(ReqPro40.enumTagFormat.eTagFormat_ReqNameOrReqText);
tempTxt=tempTxt.Substring(1, tempTxt.Length-1);
char[] charsToRemoveForXMLLegality = new char[]
{ '\x000a', '\x000b', '\x0002', '\x001e', // NL, VT, STX, RS
'\x0034', '\x8220', '\x8221', // ", left double, right double quote
'\x8216', '\x8217', // left single quote, right single quote
'x8211', '\x8212', // en-dash, em-dash
'\x0188', '\x0177', // 1/4 fraction, plus/minus
'\x8230', '\x0160' // ellipsis, non-breaking space
};
string[] charsToSubstituteForXMLLegality = new string[]
{ " ", " ", "", "-",
"\"", "\"", "\"",
"\'", "\'",
"-", "-",
"1/4", "+/-",
"...", " "
};
for (int i = 0; i < charsToRemoveForXMLLegality.Length; i++)
{
tempTxt = tempTxt.Replace(charsToRemoveForXMLLegality[i].ToString(), charsToSubstituteForXMLLegality[i]);
}