PDA

View Full Version : سوال: نحوه جداسازی حروف از کلمه و جمله



nsco_nsco
شنبه 21 اسفند 1389, 04:11 صبح
سلام دستان یک سوال خیلی خیلی مهم داشتم

می خواستم ببینم چطوری مثلا یک جمله تو نرم افزار در یک فیلد داریم مثلا:

هوا امروز چقدر سرد است

می خواستم ببینم چطوری کلمه هوا را تجزیه کنم به صورت :

ه
و
ا

و بعد کلمه رو چه جوری جدا کنم یعنی مثلا امروز رو از جمله ممنون می شوم سریع پاسخ دهید و کمکم کنید با تشکر از همه شما :تشویق::قلب:

Felony
شنبه 21 اسفند 1389, 06:24 صبح
با استفاده از توابع Pos و PosEX و Copy .

reza_66
دوشنبه 23 اسفند 1389, 12:38 عصر
سلام

میشه نحوه ی ترکیب کردن حروف یا اعداد رو هم برای ارسال داخل یک ادیت توضیح بدین

ممنون

M_Maskout
پنج شنبه 26 اسفند 1389, 12:59 عصر
سلام
از تابع IntToStr برای تبدیل عدد به رشته‌ای از اعداد استفاده کن:


var
s: String;
i: Integer;
begin
s := 'Mahdi';
i := 20;
s := s + IntToStr(i);
end;

nsco_nsco
شنبه 17 اردیبهشت 1390, 21:12 عصر
با استفاده از توابع Pos و PosEX و Copy .
سلام میشه یک کمی در مورد این توابع توضیح بدید ممنون :قلب:

nsco_nsco
شنبه 17 اردیبهشت 1390, 21:23 عصر
سلام من می خوام کلماتی که در یک memo وجود داره رو یکی یکی جدا کنم در ضمن فارسی هم هست ممنون می شوم کمک کنید با تشکر:قلب:

tdkhakpur
شنبه 17 اردیبهشت 1390, 22:31 عصر
var
len :integer;
s :string;
begin
s := Memo1.Lines.Text;
while s<>'' do
begin
len := pos(' ', s);
if len=0 then len := Length(s);
ShowMessage(copy(s, 0, len));
s := copy(s, len+1, Length(s)-len);
end;
end;

برای اینکه فارسی رو بخوانید باید memo و متغیر از نوع WideString تعریف کنی نه string.

nsco_nsco
شنبه 17 اردیبهشت 1390, 22:47 عصر
سلام ممنون از پاسختون اگر بخواهیم حرف به حرف جدا کنیم چگونه باید این کار رو انجام بدیم البته برای فارسی ممنون:قلب:

tdkhakpur
یک شنبه 18 اردیبهشت 1390, 14:19 عصر
اگر بخواهیم حرف به حرف جدا کنیم چگونه باید این کار رو انجام بدیم البته برای فارسی

برای فارسی عرض شد با همین الگوریتم انجام میشه فقط خصوصیت و متغیر تعریفی باید از نوع wide باشه.


var
i :integer;
begin
for i:=0 to Length(Memo1.Lines.Text) do
ShowMessage(Memo1.Lines.Text[i]);
end;

a_mosavian
یک شنبه 18 اردیبهشت 1390, 23:16 عصر
با استفاده از کلاس TParser
http://docwiki.embarcadero.com/VCL/en/Classes.TParser

nsco_nsco
پنج شنبه 22 اردیبهشت 1390, 17:16 عصر
سلام ممنون از پاسخهاتون چطوری میت ونم به همون صورتی که گفتید :


var
i :integer;
begin
for i:=0 to Length(Memo1.Lines.Text) do
ShowMessage(Memo1.Lines.Text[i]);
end;


بیایم و مصلا اگر به حرف Mرسید مثلا لیبل یک رو بنویسه اوکی و اگر نبود بنویسد نو ممنون می شوم سریع کمک کنید با تشکر :قلب:

Felony
پنج شنبه 22 اردیبهشت 1390, 19:38 عصر
var
i :integer;
begin
for i:=0 to Length(Memo1.Lines.Text) do
if Memo1.Lines.Text[i] = 'M' then
Label1.Caption:= Yes
else
Label1.Caption:= No;
end;
اگر خواستید وقتی حرف جاری مثلا مساوی M بود یک کاری انجام بشه و از حلقه خارج بشید و دیگر کاراکترها رو بررسی نکنید باید از Exit استفاده کنید .

nsco_nsco
پنج شنبه 22 اردیبهشت 1390, 21:51 عصر
سلام ممنون از پاسختون اما من زمانی که کارکتر ام رو قرار می دهم در متن میمو اگر در ادامه باشد مشکلی ندارد و درست کار می کند اگر این رو در وسط نوشته بنویسیم اصلا پیداش نمی کند ممنون می شوم کمک کنید و بگید مشکل از کجاست ممنون از همه شما:قلب:

nsco_nsco
پنج شنبه 22 اردیبهشت 1390, 23:25 عصر
سلام کسی از دوستان نیست کمکمون کنه ممنون:قلب:

SAASTN
پنج شنبه 22 اردیبهشت 1390, 23:25 عصر
اگر خواستید وقتی حرف جاری مثلا مساوی M بود یک کاری انجام بشه و از حلقه خارج بشید و دیگر کاراکترها رو بررسی نکنید باید از Exit استفاده کنید .
البته Exit که باعث میشه از کل متد خارج بشیم، یعنی اگر بعد از حلقه هم کدی باشه دیگه اجرا نمیشه. اگر بخوایم فقط اجرای حلقه متوقف بشه ولی کدهای بعدی اجرا بشه باید از Break استفاده کنیم.

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

loo30fer
پنج شنبه 22 اردیبهشت 1390, 23:26 عصر
بدین شکل ازش استفاده کنید فکر کنم مشکلتون حل میشه :
var
i :integer;
begin
for i:=0 to Length(Memo1.Lines.Text) do
if Memo1.Lines.Text[i] = 'M' then begin
Label1.Caption:= 'Yes';
Exit;
end else begin
Label1.Caption:= 'No';
end;end;

nsco_nsco
پنج شنبه 22 اردیبهشت 1390, 23:37 عصر
از همه ممنون هستم مشکل حل شد

nsco_nsco
جمعه 23 اردیبهشت 1390, 16:01 عصر
سلام یک کمک دیگه هم می خوام چطوری می تونم سه رقم سه رقم یا شش رقم شش رقم (کارکتر) جدا کنم ممنون می شوم بگید با تشکر :قلب:

nsco_nsco
جمعه 23 اردیبهشت 1390, 20:11 عصر
سلام کسی از دوستان نیست مارو یاری بروسند ممنو ن می شم :قلب:

SAASTN
شنبه 24 اردیبهشت 1390, 00:59 صبح
اگه می خواید یه عدد رو، اونم تنها سه رقم سه رقم، اونم تنها با کاما جدا کنید:
ShowMessage(Format('%n', [3265132654.435]));

اما اگه ورودی هر جور رشته ای می تونه باشه، تعدا کاراکترهای جدا شده هم باید تحت کنترل باشه و جداکننده رو هم خودتون می خواید تعیین کنید یه چیزی شبیه به این می تونه جواب بده:
function InsertSeparator(const Str: string; const Sep: Char; CharNum: Integer): string;
begin
if Length(Str) < CharNum then
Result := Str
else
Result := (InsertSeparator(LeftStr(Str, Length(Str) - CharNum), Sep, CharNum) +
Sep+RightStr(Str, CharNum));
end;
...
ShowMessage(InsertSeparator('Hello World!', '/', 3));


اگرم منظورتون از جدا کردن اینه که کاراکترها سه تا سه تا بطور مجازا در دسترس باشند که همین کد رو می تونید کمی تغییر بدید و خروجی رو در یه آرایه داینامیک از string یا یه StringList قرار بدید.

hassan p.b
سه شنبه 24 آبان 1390, 15:23 عصر
با تشکر از شما و تمام دوستان
حال در فایل متنی چطور می توان اعداد و حروف را دقیق جدا کرد من قبلا در پستی این را آوردم ولی با پیشرفتی که کردیم در جاهایی در فایل متنی بنده که شاملG00 X-09373773 Y0988 R36736 F00 است و در فایل هایی هم ممکن است تعدادی از کاراکترهای حرفی نباشد مثال بنده دچار مشکل می گرددبرای شرح بیشترX-0.272772 Y0.9 R878787 است و لی جاهایی هم R OR Y نیست و تفکیک درست انجام نمی گردد لطفا راهنمایی نمایید
با تشکر
فایل های مثال متنی همراه مثال هستند مثال1و2
حسن
لینک تاپیک فوق:

http://barnamenevis.org/showthread.php?252634-%DA%A9%D8%A7%D8%B1-%D8%A8%D8%A7-%D9%81%D8%A7%DB%8C%D9%84-%D9%87%D8%A7%DB%8C-%D9%85%D8%AA%D9%86%DB%8C-%D8%AF%D8%B1-%D8%AF%D9%84%D9%81%DB%8C-txt-text/page2&highlight=TStringList

hassan p.b
سه شنبه 08 مرداد 1392, 15:24 عصر
ادامه کار در لینک زیر
http://barnamenevis.org/showthread.php?252634-%DA%A9%D8%A7%D8%B1-%D8%A8%D8%A7-%D9%81%D8%A7%DB%8C%D9%84-%D9%87%D8%A7%DB%8C-%D9%85%D8%AA%D9%86%DB%8C-%D8%AF%D8%B1-%D8%AF%D9%84%D9%81%DB%8C-txt-text&p=1835308#post1835308

hassan p.b
یک شنبه 09 شهریور 1393, 00:39 صبح
http://barnamenevis.org/showthread.php?459841-%D8%AE%D9%88%D8%A7%D9%86%D8%AF%D9%86-%D9%81%D8%A7%DB%8C%D9%84-%D9%85%D8%AA%D9%86%DB%8C-%D9%88-%D8%AC%D8%AF%D8%A7%D8%B3%D8%A7%D8%B2%DB%8C-%D9%85%D9%82%D8%A7%D8%AF%DB%8C%D8%B1-%D8%B9%D8%AF%D8%AF%DB%8C-%D8%A7%D8%B2-%D8%A2%D9%86-(%D9%88%D9%82%D8%B1%D8%A7%D8%B1-%D8%AF%D8%A7%D8%AF%D9%86-%D8%AF%D8%B1-%D8%AC%D8%AF%D9%88%D9%84-%D9%88-%DB%8C%D8%A7-%D9%84%DB%8C%D8%B3%D8%AA-%D8%A8%D8%A7%DA%A9%D8%B3)&p=2058207#post2058207