Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.04.2017, 08:48   #1
HellMercenariess
Форумчанин
 
Аватар для HellMercenariess
 
Регистрация: 27.07.2009
Сообщений: 547
Вопрос Разделить строку содержащую иероглифы

Раньше для разделения текста использовал такой вот юнит:
Код:
unit Splitunit;
interface
  uses
  Windows,strUtils, DateUtils, Messages,Dialogs, SysUtils, Variants, Classes,StdCtrls;

type
   TData = Array of String;
   const obzon = '!,.-_';

function Split(S : String; C :Char): TData;

implementation

function Split(S : String; C :Char): TData;
var
   Data : TData;

   procedure DelC(var S : String);
   var
     i : Integer;
   begin
     i:=0;
   if Pos(obzon, S)=Length(s) then
     Delete(S,1,Length(s));


     while (Length(s) > 0) and (S[i+1]=C) do
       Inc(i);
     Delete(S, 1, i);
   end;

   procedure Splitting(S : String);
   var
     w : String;
     i : Integer;
     k : Integer;
   begin
   for i:=1 to Length(obzon) do S:=StringReplace(S,obzon[i],' ',[rfReplaceAll]);

     if Length(s) < 1 then
       Exit;
     if S[1] = C then
       DelC(S)
     else
     begin
       w:=''; i:=1;
       while ( s[i] <> C ) and ( i <= Length(S) ) do begin
         w:=w+S[i];
         Inc(i);
       end;
       Delete(S, 1, Length(w));
       k:=Length(Data);
       SetLength(Data,k+1);
       Data[k]:=w;
     end;
     Splitting(S);
   end;

begin
   Splitting(S);
   Result:=Data;
end;

end.
Латиницу и кирилицу разделяет нормально по пробелам, а вот японской письменностью проблемы - ничего не резделяется вообще как будто пробелов нет!

еще так вот пробовал разделить:
Код:
operativ:TStringList;
 Operativ.Delimiter:=' ';
 Operativ.DelimitedText:=Edit1.Text;
  ListBox1.Items.Assign(Operativ);
"Виновник этого парада,он не дурак, ушел как надо!" Похороны панка.
HellMercenariess вне форума Ответить с цитированием
Старый 05.04.2017, 08:50   #2
HellMercenariess
Форумчанин
 
Аватар для HellMercenariess
 
Регистрация: 27.07.2009
Сообщений: 547
По умолчанию

Образец текста для разделения
亜紀ら輪  黒沢  ホランダ
"Виновник этого парада,он не дурак, ушел как надо!" Похороны панка.
HellMercenariess вне форума Ответить с цитированием
Старый 05.04.2017, 10:49   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

проблема с Unicode.
для начала - какая у Вас версия Delphi?

да и пробелов ( в общем понимании ) в этом тексте нет.
скопируйте текст в блокнот и попробуйте найти пробел.

Последний раз редактировалось Serge_Bliznykov; 05.04.2017 в 10:52.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 05.04.2017, 11:33   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

и ещё.
просто оставлю это здесь:

не существует такой вещи как "просто текстовый файл":
Статья Джоеэля Спольски под названием «Абсолютный минимум о Unicode и наборе символов для каждого разработчика(без исключений!)»


Хабрахабр - Что нужно знать каждому разработчику о кодировках и наборах символов для работы с текстом
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[РЕШЕНО] Найти в файле строку, содержащую наименьшее количество слов из пяти букв, и удалить ее Ирина Курова Паскаль, Turbo Pascal, PascalABC.NET 2 04.04.2016 20:49
разделить строку mitiay Общие вопросы Delphi 3 18.10.2015 15:09
Ввести строку, содержащую цифры. Определить является ли она записью шестнадцатеричного числа. Roman1295 Паскаль, Turbo Pascal, PascalABC.NET 10 24.12.2012 22:52
Скопировать строку, содержащую активную ячейку. Iren Microsoft Office Excel 14 10.10.2007 12:19