Я хочу заменить определенные символы во входной строке другими символами.
Текст ввода содержит левые и правые интеллектуальные кавычки Microsoft, которые я хотел бы преобразовать в один ".
Я планировал использовать операцию Replace, но мне трудно создать текстовую строку для поиска.
Я бы хотел заменить входную последовательность (в шестнадцатеричном формате)\xE2809C и изменить эту последовательность только на один ". То же самое с \xE2809D.
Как создать строку для использования в операции Replace?
Я думаю о чем-то вроде (в цикле):
tempTxt = tempTxt.Replace(charsToRemove[i], charsToSubstitute[i]);
но мне не удается создать массив charsToRemove.
Может быть, вопрос большой: может ли весь входной файл считываться и преобразовываться в обычный ASCII, используя некоторые чтения/записи и преобразования строк в С#.
Спасибо, Майк
Что-то вроде этого?
char [] charsToRemove = {
'\u201C', // These are the Unicode code points (not the UTF representation)
'\u201D'
};
char [] charsToSubstitute = {
'"',
'"'
};
Я использую 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]);
}
Возможно, вы захотите дать Regex выстрел. Вот пример, который заменит текст с интеллектуальным цитированием на сингл ".
string tempTxt = "I am going to "test" this. "Hope" it works";
string formattedText = Regex.Replace(tempTxt, "s/"|"|"|"/", @"""");