مشکل با دستور Replace در سی شارپ

#C

توسط thearrow در 6 سال پیش
0 58k 10 6 سال پیش
thearrow xman
0

سلام من از دستور زیر برای جایگذاری متن که به حروف حساس نباشه استفاده میکنم :

[CSHARP] if (msg.Body.ToLower().Contains("english.persian.")) { string add = null; add = msg.Body.ToLower().Replace("english.persian.", ""); x.Send("<message type='chat' to='" + msg.From.User + "@nchat.ir' id='mir_8'><body></body></message>"); } [/CSHARP]

Msg به ToLower و Contain گیر میده و مثله اینکه اصلا با اون سازگار نیست ( البته اینم بگم که تا آیدی آنلاین نشده ، این ارور در سی شارپ نمیاد)

این اروری هست که روی کامپیوتر های دیگه میاد :

See the end of this message for details on invoking 
just-in-time (JIT) debugging instead of this dialog box.

************** Exception Text **************
System.NullReferenceException: Object reference not set to an instance of an object.
   at RamTinTRBot.Form1.ramtin_OnMessage(Object sender, Message msg)


************** Loaded Assemblies **************
mscorlib
    Assembly Version: 4.0.0.0
    Win32 Version: 4.0.30319.17929 built by: FX45RTMREL
    CodeBase: file:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/mscorlib.dll
----------------------------------------
RamTinTRBot
    Assembly Version: 1.0.0.0
    Win32 Version: 1.0.0.0
    CodeBase: file:///C:/Users/MRRAMT~1/AppData/Local/Temp/RarSFX0/RamTinTRBot.exe
----------------------------------------
System.Windows.Forms
    Assembly Version: 4.0.0.0
    Win32 Version: 4.0.30319.17929 built by: FX45RTMREL
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms/v4.0_4.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
----------------------------------------
System.Drawing
    Assembly Version: 4.0.0.0
    Win32 Version: 4.0.30319.17929 built by: FX45RTMREL
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Drawing/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
----------------------------------------
System
    Assembly Version: 4.0.0.0
    Win32 Version: 4.0.30319.17929 built by: FX45RTMREL
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System/v4.0_4.0.0.0__b77a5c561934e089/System.dll
----------------------------------------
agsXMPP
    Assembly Version: 1.1.0.0
    Win32 Version: 1.1.0.0
    CodeBase: file:///C:/Users/MRRAMT~1/AppData/Local/Temp/RarSFX0/agsXMPP.DLL
----------------------------------------
System.Configuration
    Assembly Version: 4.0.0.0
    Win32 Version: 4.0.30319.17929 built by: FX45RTMREL
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Configuration/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll
----------------------------------------
System.Xml
    Assembly Version: 4.0.0.0
    Win32 Version: 4.0.30319.17929 built by: FX45RTMREL
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Xml/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.dll
----------------------------------------
Microsoft.VisualBasic
    Assembly Version: 10.0.0.0
    Win32 Version: 11.0.50709.17929 built by: FX45RTMREL
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/Microsoft.VisualBasic/v4.0_10.0.0.0__b03f5f7f11d50a3a/Microsoft.VisualBasic.dll
----------------------------------------
System.Core
    Assembly Version: 4.0.0.0
    Win32 Version: 4.0.30319.17929 built by: FX45RTMREL
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Core/v4.0_4.0.0.0__b77a5c561934e089/System.Core.dll
----------------------------------------
WebResourceProvider
    Assembly Version: 1.0.2206.29497
    Win32 Version: 1.0.2206.29497
    CodeBase: file:///C:/Users/MRRAMT~1/AppData/Local/Temp/RarSFX0/WebResourceProvider.DLL
----------------------------------------

************** JIT Debugging **************
To enable just-in-time (JIT) debugging, the .config file for this
application or computer (machine.config) must have the
jitDebugging value set in the system.windows.forms section.
The application must also be compiled with debugging
enabled.

For example:

<configuration>
    <system.windows.forms jitDebugging="true" />
</configuration>

When JIT debugging is enabled, any unhandled exception
will be sent to the JIT debugger registered on the computer
rather than be handled by this dialog box.
0

یادم رفت بگم اینم عکس ارور در سی شارپ:

0

مقدار msg اینجا چیه؟ اصلا msg از چه نوعیه؟ با این کد که چیزی معلوم نیست

0

با این کد میتونی بفمی که متغیر از چه نوعیه اگر امکان داره سورس کاملتر بذار[CSHARP] Console.WriteLine(msg.GetType());[/CSHARP] در ضمن اصلا نیاز نیست که از if استفاده کنی (در صورتی که تو else کدی نداری) خود تابع replace میگرده و اگر چنین چیزی تو string بود جایگزین و در غیر این صورت کاری انجام نمیده . پس نیازی به گذاشتن شرط اضافه نیست.

[CSHARP]string add = msg.Body.ToLower().Replace("english.persian.", ""); x.Send("<message type='chat' to='" + msg.From.User + "@nchat.ir' id='mir_8'><body></body></message>");[/CSHARP]

0

اینم پروژه کامل :

آخرین ویرایش: 02-05-2013 ساعت 21:33، توسط The Arrow
0

یه .ToString() قبل .toLower() اضافه کن .Body رو حذف کن چون مقدارش null ــه

0

ویرایش کردم دوباره ببین :smilingsmiley:

0

نگاه Body که حذف شه درست میشه اما جواب کاربر رو اینجور میده!!!!! lt;پیام xmlns = سخن تند و ناشمرده: مشتری = pesarake.irani @ nimbuzz.com / NIMBUZZ XML: لنگ = EN نوع = چت از = zendegie.morde @ nimbuzz.com/nimbuzzdesktop30303 شناسه = دسکتاپ-000000000050 > <thread> {bec12372 f2be-4457-8566-d58094a6ac64} </ موضوع> های های <body> سلام </ body> <request xmlns=urnmpp:receipts /> <active xmlns=http://jabber.org/protocol/chatstates /> </ پیام> 22:00 lt;پیام xmlns = سخن تند و ناشمرده: مشتری = pesarake.irani @ nimbuzz.com / NIMBUZZ XML: لنگ = EN نوع = چت از = zendegie.morde @ nimbuzz.com/nimbuzzdesktop30303 شناسه = دسکتاپ-000000000050 > <thread> {bec12372 f2be-4457-8566-d58094a6ac64} </ موضوع> های های <body> سلام </ body> <request xmlns=urnmpp:receipts /> <active xmlns=http://jabber.org/protocol/chatstates /> </ پیام>

یعنی کد رو داغون میکنه اگه نباشه!!!!!!

0

خب درستش باید چطوری باشه؟ پروژت شلوغه اصلا معلوم نیست چی به چیه بعدش body اصلا هیچ جای برنامه مقدار دهی نمیشه بعد چطور میخوای ازش استفاده کنی؟

0

Body یکی از زیر شاخه های Void ramtin_OnMessage هست که اینم از AgsXMPP گرفته شده یعنی در واقع با Body میشه پیام رو خوند و ارسال کرد

خوش آمدید

برای طرح سوال، ایجاد بحث و فعالیت در سایت نیاز است ابتدا وارد حساب کاربری خود شوید. در صورتی که هنوز عضو سایت نیستید میتوانید در عرض تنها چند ثانیه ثبت نام کنید.

لطفا ابتدا لاگین کنید