我發現this問題,但它也刪除了所有有效的utf-8
字符(返回一個空字符串,而有效的utf-8
字符加上控制字符)。當我讀到utf-8
時,control characters
沒有特定的範圍,每個字符集都有它自己的control characters
。從UTF-8字符串中刪除控制字符
如何修改above解決方案以僅刪除control characters
?
我發現this問題,但它也刪除了所有有效的utf-8
字符(返回一個空字符串,而有效的utf-8
字符加上控制字符)。當我讀到utf-8
時,control characters
沒有特定的範圍,每個字符集都有它自己的control characters
。從UTF-8字符串中刪除控制字符
如何修改above解決方案以僅刪除control characters
?
我認爲下面的代碼會爲你工作:
public static string RemoveControlCharacters(string inString)
{
if (inString == null) return null;
StringBuilder newString = new StringBuilder();
char ch;
for (int i = 0; i < inString.Length; i++)
{
ch = inString[i];
if (!char.IsControl(ch))
{
newString.Append(ch);
}
}
return newString.ToString();
}
如果您打算使用的字符串作爲查詢字符串,你應該考慮使用Uri.EscapeUriString()
或Uri.EscapeDataString()
發送出去之前。 注意:您可能仍需要首先從char.IsControl()中取出任何東西?
這是我的風格:
Regex.Replace(evilWeirdoText, @"[\u0000-\u001F]", string.Empty)
這剔除了所有的前31個控制字符。從\ u001F開始的下一個十六進制值是\ u0020和空格。空格前的所有內容都是換行符和空廢話。
你知道,用幾行代碼(究竟是UTF-8字符串?)和文本的小樣本,這將開始看起來像一個真正的題。 –
真正的字符串是帶有一些分號和控制字符的阿拉伯語'utf-8'字符串。我提供了一個最類似問題的鏈接:http://stackoverflow.com/questions/20762/how-do-you-remove-invalid-hexadecimal-characters-from-an-xml-based-data-source-pr – Xaqron
你如何定義控制字符?那些代碼點爲<32的? – CodesInChaos