Html.Decoded在字符串函数中存在问题

时间:2016-03-04 12:37:56

标签: c# string replace

string local= HttpUtility.HtmlDecode(GetLocalizedSupportPhone()).Replace("-", "").Replace(" ", "");

我收到一个字符串:

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

来自GetLocalizedSupportPhone()方法。 Html Decode方法返回:

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

我有一个电话号码列表,如: - "01244148173""01244148173"等,它们是没有任何空格字符或html字符的普通整数。

问题场景: - 我想做的就是解码 本地 字符串(“0-12-4 41-481-73”),将­替换为以及" "string字符,并将结果 本地 字符串与列表项进行比较。如果存在类似的列表项,则删除该特定列表项。

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

我只是好奇为什么会这样?为什么任何串联方法(就像我尝试使用.split())无法检测到"-"

2 个答案:

答案 0 :(得分:3)

有不同类型的连字符。 <html> <body> <div align="center"> <table id="allData"> <tbody> <tr> <th>Number</th> <th>Name</th> <th>Value</th> </tr> <tr> <th>1.</th> <td>Name 1</td> <td>Value 1</td> </tr> <tr> <th>2.</th> <td>Name 2</td> <td>Value 2</td> </tr> <tr> <th>100.</th> <td>Name 100</td> <td>Value 100</td> </tr> <tr> <th>1.</th> <td>Name 1</td> <td>Value 1</td> </tr> <tr> <th>2.</th> <td>Name 2</td> <td>Value 2</td> </tr> <tr> <th>100.</th> <td>Name 100</td> <td>Value 100</td> </tr> <tr> <th>1.</th> <td>Name 1</td> <td>Value 1</td> </tr> <tr> <th>2.</th> <td>Name 2</td> <td>Value 2</td> </tr> <tr> <th>100.</th> <td>Name 100</td> <td>Value 100</td> </tr> <tr> <th>1.</th> <td>Name 1</td> <td>Value 1</td> </tr> <tr> <th>2.</th> <td>Name 2</td> <td>Value 2</td> </tr> <tr> <th>100.</th> <td>Name 100</td> <td>Value 100</td> </tr> <tr> <th>1.</th> <td>Name 1</td> <td>Value 1</td> </tr> <tr> <th>2.</th> <td>Name 2</td> <td>Value 2</td> </tr> <tr> <th>100.</th> <td>Name 100</td> <td>Value 100</td> </tr> </tbody> </table> </div> </body> </html>是一个柔和的连字符。特别是软连字符是173,键盘上的连字符是45。

试试这个。

&shy;

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

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

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

答案 1 :(得分:0)

如果您只是想从字符串中删除空格和软超标而不必处理HTML解码,这可能会有所帮助:

function checkDefaultFloor(nextState, replace, callback){
  if (settings.floorUrl){
    console.log( settings.floorUrl);
     replace(`/maps/${settings.floorUrl}`)
  }
  callback();
}

我尝试使用Trim((char)173),但它(和Split这样的方法)似乎无法像Regex类那样处理软连字符。