2016-03-04 64 views
1
string local= HttpUtility.HtmlDecode(GetLocalizedSupportPhone()).Replace("-", "").Replace(" ", ""); 

我得到的字符串:Html.Decoded ­是字符串函数问题

"0­12­4 41­481­73" 

GetLocalizedSupportPhone()方法。在HTML解码方法返回:

"0-12-4 41-481-73" 

我有一个像电话号码的清单: - "01244148173""01244148173",等这是没有任何空格字符或HTML字符普通整数。

问题场景: - 所有我想要做的就是要解码当地字符串(“0-12-4 41-481-73”),取代­以及" "string性格和比较结果当地串与列表项目。如果存在类似的列表项目,则删除该特定的列表项目。

但奇怪的是,.Replace()方法用空字符串替换空格字符,但无法用空string替换"-"

我只是好奇它为什么会发生?为什么任何字符串方法(如我试用.split())无法检测到"-"

+0

不,这不应该是问题...字符串方法应该找到替换。但是,如何检查你是否无法用空字符串替换字符串“ - ”? – Ian

回答

3

有不同类型的连字符。 ­是一个软连字符。具体来说,软连字符是173,键盘上的连字符是45.

试试这个。

var r = HttpUtility.HtmlDecode("0­12­4 41­481­73") 
        .Replace((char)173, ' ') 
        .Replace(" ", ""); 

这将用一个空格代替软连字符,然后你的第二个替换将摆脱那。

另一种选择是使用正则表达式来删除所有非数字值。

Regex nonNumeric = new Regex(@"\D"); 
var r = nonNumeric.Replace(
    HttpUtility.HtmlDecode("0­12­4 41­481­73"), 
    string.Empty); 
+0

哇! 我有这样的连字符是不同的,但永远不会想到解决方案:) 非常感谢! – Bounty

0

这可能帮助,如果你只是希望从字符串中去除空间和软hypens无需处理HTML解码:

var regex = new Regex(@"\u00ad| "); 
var result = regex.Replace(stringWithSoftHyphens, string.Empty); 

我试着用TRIM((焦炭)这样做但它(和Split等方法)似乎不能像Regex类那样处理软连字符。