2012-10-14 2 views
0

мои сообщения обычно приходит, как это в SMSgateway (шлюз направил сообщение в наше приложение),Строка заменить другой символ C#

Брусчатка põll 1 2 3 4 5 6 7 8 121011 (это сообщение правильно)

Но некоторые случаи, это сообщение приходит как,

Брусчатка р &oslas; LL 1 2 3 4 5 6 7 8 121011 (это сообщение неправильное, D поставляется с &oslas;)

это сообщение приходит как строка, когда приходит сообщение &oslas; Мне нужно заменить его на Ø. иногда он приходит с другим именем, например gordØn (gord &oslas; n) Он всегда стат с & знак & endup with; знак.

Здесь я попытался это сделать, но мои знания не достаточно, чтобы завершить это ..

protected void Page_Load(object sender, EventArgs e) 
{ 

    try 
    { 
     string mobileNo = Request.QueryString["msisdn"]; 
     int dest = int.Parse(Request.QueryString["shortcode"].ToString()); 
     string messageIn = Request.QueryString["msg"]; 
     string operatorNew = Request.QueryString["operator"]; 

     string []reparr = messageIn.Split(' ');//split it & then check contains 
     reparr[1].Contains = '&'; 
     reparr[1].Contains = ';'; 
     // In here i need to check that character & replace it to originalone. 


     Label1.Text = "ok"; 

     WriteToFile(mobileNo, dest, messageIn, operatorNew,true,"",""); 
+0

Я имею в виду, вы можете сделать предположительно 'messageIn.Replace (» &oslas; "," ø ");', но я думаю, что использование 'HtmlDecode' является более гибким. – nneonneo

+0

Когда я добавляю HtmlDecode, то после &, все символы отсутствуют. –

ответ

2

Те выглядят как HTML сущности. Вы можете попытаться расшифровать их с помощью HttpUtility.HtmlDecode:

string messageIn = HttpUtility.HtmlDecode(Request.QueryString["msg"]); 
+1

Я думаю, что вы не можете использовать эту функцию, OP нуждается в замене строки – TechGuy

+1

он спрашивает, когда какой-то символ внутри &xxxx;, то как заменить оригинальным Ø; character – TechGuy

+2

Да, но '&xxxx;' обычно известны как объекты HTML. Поскольку он получает данные из веб-формы, имеет смысл, что вход может содержать объекты HTML. Использование библиотечной функции намного проще, чем попытка справиться с сотнями определенных объектов HTML. – nneonneo

0

вы можете использовать HttpServerUtility.UrlDecode для декодирования URL см http://msdn.microsoft.com/en-us/library/system.web.httpserverutility.urldecode.aspx

+1

Это кажется неправильной функцией; он декодирует URL-адреса ('% 20'), а не объекты HTML (' & '). – nneonneo

+0

querystring должно быть от url. – urlreader

+1

он спрашивает, когда какой-то символ внутри &xxxx;, то как заменить оригинальным символом Ø – TechGuy

0

Я не знаю, о коммунальных услуг веб-пространства имен, но вы можете использовать ниже код (если позиция из & и, всегда будет находиться в начале сообщения, и эти символы не будут отображаться внутри текста сообщения):

String s = @"sett p&oslas;ll 1 2 3 4 5 6 7 8 121011"; 
Int32 startIndex = s.IndexOf("&"); 
String s1 = s.Replace(s.Substring(startIndex, s.IndexOf(";") - startIndex + 1), "Ø"); 
+0

Итак, что произойдет, если в диалоговом окне есть два символа текст? – nneonneo

+0

ОП не объяснил ничего подобного. OP ожидает, что символ символа не будет отсутствовать, когда произойдет недопустимое значение, и если значение параметра Ø, то значение будет действительным. Конечно, код должен будет обрабатывать все сценарии. – jags

Смежные вопросы