想要形成具有给定十六进制代码值的字符串

时间:2009-08-25 16:33:04

标签: c# string replace hex

我想用其他字符替换输入字符串中的某些字符。

输入文本有Microsoft左右智能引号,我想将其转换为单个“。

我打算使用Replace操作,但是在编写要搜索的文本字符串时遇到了问题。

我想替换输入序列(十六进制)\ xE2809C,并将该序列更改为单个“。但与\ xE2809D同上。

如何构成要在Replace操作中使用的字符串?

我正在考虑(在一个循环中):

tempTxt = tempTxt.Replace(charsToRemove[i], charsToSubstitute[i]);

但是我在创建charsToRemove数组时遇到了麻烦。

可能更大的问题是,是否可以使用C#中的一些读/写和字符串转换读取整个输入文件并将其转换为纯ASCII。

谢谢,迈克

3 个答案:

答案 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]);
}