ソス@ソスソスTrimソスヨ撰ソスソスナ大文ソスソスソスXソスyソス[ソスXソスソスTrimソスホ象にゑソスソスソスソスソス
|
ソスEC/C++
ソスEDelphi
ソスEVisual BasicソスソスソスSソスソス
ソス@(VB2-VB6ソスソス.NETソスソスソスp)
ソスEVisual Basic(VB2-VB6)
ソスEVisual Basic .NET
ソスEVisual C++
ソスEpapy's softwarelibrary
Delphi5ソスソスgソスソスソストゑソスソスソスフでゑソスソスソスソスA
Trimソスヨ撰ソスソスフ削除ソスホ象にて全ソスpソスXソスyソス[ソスXソスヘ削除ソスソスソスソスネゑソスソス謔、ソスナゑソスソスB
ソスSソスpソスXソスyソス[ソスXソスソス除ソスホ象にゑソスソスソスノはどゑソスソスソスソスソスソスソス謔「ソスナゑソスソス蛯、ソスソスソスH
ソスソスソスwソスソスソスソスソス閧「ソスソスソスワゑソスソスB
ShowMessage(StringReplace('hogeソス@ソスルゑソスソス@hogeソス@ソスルゑソス', 'ソス@', '', [rfReplaceAll]));
> ShowMessage(StringReplace('hogeソス@ソスルゑソスソス@hogeソス@ソスルゑソス', 'ソス@', '', [rfReplaceAll]));
ソスソスソスソスナゑソスソスソスソスATrimソスニは難ソスソスがソスソスソスソストゑソスソスソスフではなゑソスソスナゑソスソスソスソスH
(ソスwソスソスソスvソスソスソス)
Trimソスヨ撰ソスソスヘ包ソスソスソスソスかゑソス謫ェソスソスソスソスソスソスソスソスム厄ソスソスソスソスソスソスソスソスフ空白と撰ソスソス苺カソスソスソスソスソス闖懶ソスソスソスワゑソスソスB
ソスソスソス`ソスIStringReplaceソスI
ソスモ点ソスナゑソスソスソスソスBソスソスソスソスソスナゑソスソスソスソスソスソス謔、ソスナゑソスソスBソスBソスB
deldelソスソスソスソスAソスソスソスwソスソスソスソスソス閧ェソスニゑソスソスソスソスソスソスソスソスワゑソスソスソスソスB
ソスソスソスTソスマ者様
ソスmソスソスソスノ・ソスEソスE
ソスソスソスソスソスフ目的ソスノゑソスソスソストは、ソスソスソスソスナゑソスソスソスソスフでゑソスソスソスソスA
ソスソスヘゑソスTrimソスナ大文ソスソスソスXソスyソス[ソスXソスソス除ソスソスソスソスソスソスソスナゑソスソスB
//ソスソスソスソスソスナ関撰ソスソスソスソスソスフゑソスソスソスヤ托ソスソスソスソスじゑソスネゑソスソスナゑソスソス蛯、ソスソス
const
ZenkakuSpace = 'ソス@';
function MBTrimRight(s : string) : string;
var
i : Integer;
begin
i := Length(s);
while i >= 1 do
begin
case ByteType(s,i) of
mbSingleByte:
if s[i] > #$20 then
Break;
mbLeadByte:
Break;
mbTrailByte:
if (s[i] = ZenkakuSpace[2]) and (s[i-1] = ZenkakuSpace[1]) then
Dec(i)
else
Break;
end;
Dec(i);
end;
Result := Copy(s,1,i);
end;
function MBTrimLeft(s : string) : string;
var
i : Integer;
begin
i := 1;
while i < Length(s) do
begin
case ByteType(s,i) of
mbSingleByte:
if s[i] > #$20 then
Break;
mbLeadByte:
if (s[i] = ZenkakuSpace[1]) and (s[i+1] = ZenkakuSpace[2]) then
Inc(i)
else
Break;
mbTrailByte:
Break;
end;
Inc(i);
end;
Result := Copy(s,i,MaxInt);
end;
function MBTrim(s : string) : string;
begin
Result := MBTrimLeft(MBTrimRight(s));
end;
ソスソスソスリ撰ソスソスlソスl
SysUtilsソスソスTrimソスヨ撰ソスソスソスソスソスソスソスソスソスト、ソスハ厄ソスソスナ関撰ソスソスノゑソスソス骼厄ソスノゑソスソスワゑソスソスB
DelphiソスヘまゑソスソスワゑソスソスソスソスSソスメソスソスxソスソスソスネので、ソス¥ソス[ソスXソスQソスlソスノゑソスソスソスソスト抵ソスソスソスソスワゑソスソスB
ソスソスソスwソスソスソスソスソス閧ェソスニゑソスソスソスソスソスソスソスソスワゑソスソスソスソスB
ソスソスソスソスAソスソスソスソスヘ?
function Trim2(S: string): string;
begin
if Copy(S, 1, 2) = 'ソス@' then S := Copy(S, 3, Length(S));
if Copy(S, Length(S) - 1, 2) = 'ソス@' then S := Copy(S, 1, Length(S) - 2);
Result := S;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage('<' + Trim2('ソス@hogeソスルゑソスソス@') + '>');
ShowMessage('<' + Trim2('hogeソスルゑソスソス@') + '>');
ShowMessage('<' + Trim2('ソス@hogeソスルゑソス') + '>');
ShowMessage('<' + Trim2('hogeソスルゑソス') + '>');
ShowMessage('<' + Trim2('ソス@hogeソス@ソスルゑソス') + '>');
end;
> Trim2
ソスソスソス[ソスフ全ソスpソスXソスyソス[ソスXソスソスソス闖懶ソスソスソスヨ撰ソスソスノなゑソスソストゑソスソスワゑソスソスか?
ソスSソスpソスXソスyソス[ソスXソスソスソスソスソス[ソスノゑソスソスソスニは鯉ソスソスソスネゑソスソスナゑソスソスソスヒ。
Trim2ソスヨ撰ソスソスヘ包ソスソスソスソスかゑソス謫ェソスソスソスソスソスソスソスソスム厄ソスソスソスソスソスソスソスソスフ全ソスpソスXソスyソス[ソスXソスソスソス闖懶ソスソスソスワゑソスソスB
deldelソスソスソスソス
('ソス@ソス@ソス@ソス@ソス@ソス@ソス@ソス@hogeソスルゑソスソス@ソス@ソス@ソス@ソス@ソス@ソス@ソス@ソス@')
ソスフ擾ソスソスソスソス`ソスI
ソスリ撰ソスソスlソスソスソスソスフソスソスXソスソスソスソスソスソスニ読みまゑソスソス蛯、ソスB
ソスTソスマ者ゑソスソスソスAソスソスソスソスソスgソスjソスソスソスソスソスソスAソスソスソスソスソスレゑソスソスナゑソスソスソスソスB
ソスソスソスンまゑソスソスソスm(_`_)m
ソスFソスlソスAソスFソスXソスソスソスwソスソスソスソスソス閧ェソスニゑソスソスソスソスソスソスソスソスワゑソスソスB
ソスソスソスソスネんが出ソスソスソスワゑソスソスソスソスB
ソスソスソスソスソスeソスXソスgソスソスソストみまゑソスソスB
function TrimMB(const S: string): string;
var
tmpS: String;
begin
tmpS := S;
while (Copy(tmpS, 1, 1) = ' ') and (Copy(tmpS, 1, 2) = 'ソス@') do
begin
if Copy(tmpS, 1, 1) = ' ' then
tmpS := Copy(tmpS, 2, Length(tmpS));
if Copy(tmpS, 1, 2) = 'ソス@' then
tmpS := Copy(tmpS, 3, Length(tmpS));
end;
while (Copy(tmpS, Length(tmpS), 1) = ' ') and (Copy(tmpS, Length(tmpS) -1, 2) = 'ソス@') do
begin
if Copy(S, Length(S), 1) = ' ' then
S := Copy(S, 1, Length(S) - 1);
if Copy(S, Length(S) - 1, 2) = 'ソス@' then
S := Copy(S, 1, Length(S) - 2);
end;
Result := tmpS;
end;
ソスネ会ソスソスナはゑソスソス゚でゑソスソスソスソスヒ。
ShowMessage('<' + TrimMB('ソス@ ソス@ソス@hogeソス@ソスルゑソスソス@ ソス@ソス@') + '>');
ソスリ撰ソスソスlソスソスソスソスフで、ソスホゑソスソスソスソス閧セソスニ思ソスソスソスワゑソスソスソスソスEソスEソスEソスH
ソスソスソスソスソスルどのソソス[ソスXソスヘ、ソス}ソス‾ソスXソスソスソス轤ッソスナゑソスソスソスソスB
ソスCソスソスソスソスソスソスソス¥ソス[ソスXソスナゑソスソスBソスソスソスソスソスソスソスソスソスナ難ソスソスソスソストまゑソスソスB
ソスリ撰ソスソスlソスlソスAdeldelソスlソスフソソス[ソスXソスソスQソスlソスノ搾ソスソスワゑソスソスソスソスB
ソスソスソスフ皆ソスlソスソスソスソスwソスEソスソスソス閧ェソスニゑソスソスソスソスソスソスソスソスワゑソスソスソスソスB
{*** ソスネ会ソスソス¥ソス[ソスX ***}
function TForm1.TrimMB(const S: string): string;
var
tmpS: String;
begin
tmpS := S;
while (Copy(tmpS, 1, 1) = ' ') or (Copy(tmpS, 1, 2) = 'ソス@') do
begin
if Copy(tmpS, 1, 1) = ' ' then
tmpS := Copy(tmpS, 2, Length(tmpS));
if Copy(tmpS, 1, 2) = 'ソス@' then
tmpS := Copy(tmpS, 3, Length(tmpS));
end;
while (Copy(tmpS, Length(tmpS), 1) = ' ') or (Copy(tmpS, Length(tmpS) -1, 2) = 'ソス@') do
begin
if Copy(tmpS, Length(tmpS), 1) = ' ' then
tmpS := Copy(tmpS, 1, Length(tmpS) - 1);
if Copy(S, Length(S) - 1, 2) = 'ソス@' then
tmpS := Copy(tmpS, 1, Length(tmpS) - 2);
end;
Result := tmpS;
end;
ソスンなゑソスソスソス...ソスソスソスソスソスソスソスソスソスニゑソスソスソスソスソス
ソスソスソスソスソスフ汎用ソスソスソスソスlソスソスソスト手続ソスソスソスソスソスソスソスネゑソスソスH
ソスSソスpソスソスソスソスソスソスソスソスネゑソスソスト、ソスSソストの包ソスソスソスソスソス
ソスソスソスすソスソス謔、ソスノ対会ソスソスソスソストゑソスソスソスソスソスソスソスソスネゑソスソスソスソスソス
ソス謫ェソスニ厄ソスソス[ソスwソスソスソスソスソスソスソスソスソスソスソスネゑソスソスソスソスソスAソスAソスA
ソスソスソスソスノフソス@ソス[ソスXソスgソスeソスXソスgソスソスソスソス{ソスソスソスソスラゑソスソスB
ソスソスソスソスソスソスソストゑソスソスソスソスニバソスOソスソスソスソスソス轤ケソスソスB
ソスソスソスフスソスソスソスナ起ソスソスソストゑソスソス謔、ソスネ凡ソス‾ソスXソスソスhソス‾ソスナゑソスソス驍オ
ソスヨ撰ソスソスフ信ソスソスソスソスソス窿奇ソスtソス@ソスNソス^ソスソスソスソスソスOソスフようソスネ会ソスソスpソスノゑソスツなゑソスソスソスソスB
const
EmptyStr: WideString = '';
function TrimLeftChar(S: WideString; Table: WideString): WideString;
var
i: Integer;
WriteIndex: Integer;
TrimFlag: Boolean;
begin
SetLength(Result, Length(S));
WriteIndex := 0;
TrimFlag := True;
for i := 1 to Length(S) do
begin
if not (TrimFlag and (1<=Pos(S[i], Table))) then
begin
TrimFlag := False;
Inc(WriteIndex);
Result[WriteIndex] := S[i];
end;
end;
SetLength(Result, WriteIndex);
{ -----------------------------------
//ソス瘻ャソスソスソスソスソスRソス[ソスhソスソスソスZソスソスソスソスソスフ趣ソスソスソス
begin
while (S<>EmptyStr) and (1<=Pos(S[1], Table)) do
Delete(S, 1, 1);
Result := S;
end;
//----------------------------------- }
end;
function TrimRightChar(S: WideString; Table: WideString): WideString;
var
i: Integer;
WriteIndex: Integer;
begin
Result := S;
WriteIndex := Length(Result);
for i := Length(S) downto 1 do
begin
if (1<=Pos(S[i], Table)) then
begin
Dec(WriteIndex);
end else
begin
break;
end;
end;
SetLength(Result, WriteIndex);
{ -----------------------------------
//ソス瘻ャソスソスソスソスソスRソス[ソスhソスソスソスZソスソスソスソスソスフ趣ソスソスソス
begin
while (S<>EmptyStr) and (1<=Pos(S[Length(S)], Table)) do
Delete(S, Length(S), 1);
Result := S;
end;
//----------------------------------- }
end;
function TrimChar(S: WideString; Table: WideString): WideString;
begin
Result := TrimLeftChar(TrimRightChar(S, Table), Table);
end;
procedure Check(A, B: String);
begin
if not(A = B) then
begin
raise Exception.Create('ソスGソスソスソス[ソスナゑソス ' + A + ':' + B);
end;
end;
procedure testTrimLeftChar;
begin
Check('ソスソス', TrimLeftChar('ソス@ソス@ソスソス', 'ソス@'));
Check('ソスソス', TrimLeftChar('ソス@ソス@ソス@ソスソス', 'ソス@'));
Check('ソスソス', TrimLeftChar('ソスソスソスソスソスソスソスソスソスソスソスソスソスソスソスソスソスソスソスソス', 'ソスソスソスソスソスソスソスソスソスソス'));
Check('X', TrimLeftChar('ソス@ソス@YYソス@X', 'ソス@Y'));
Check('789', TrimLeftChar('012346789', '6543210'));
Check('ABCXYZ', TrimLeftChar('XXYYZZABCXYZ', 'XYZ'));
Check('', TrimLeftChar('XXYYZZABCXYZ', 'XYZABC'));
Check('AAA'#9, TrimLeftChar(#9'AAA'#9, #9));
Check(#9, TrimLeftChar('AAA'#9, 'A'));
Check(#9'AAA', TrimLeftChar(#13#10#9'AAA', #13#10));
Check(#13#10, TrimLeftChar(#9'AAA'#13#10, #9'A'));
Check('123', TrimLeftChar('123', ''));
end;
procedure testTrimRightChar;
begin
Check('ソス@ソス@', TrimRightChar('ソス@ソス@ソスソス', 'ソスソス'));
Check('ソスソスソスソスソスソスソスソスソスソス', TrimRightChar('ソスソスソスソスソスソスソスソスソスソスソスソスソスソスソスソスソスソスソスソス', 'ソスソスソスソスソスソス'));
Check('ソスソス', TrimRightChar('ソスソスソス@ソス@ソス@', 'ソス@'));
Check('ソス@ソス@YY', TrimRightChar('ソス@ソス@YYソス@X', 'ソス@X'));
Check('012', TrimRightChar('012346789', '346789'));
Check('XXYYZZABC', TrimRightChar('XXYYZZABCXYZ', 'XYZ'));
Check('', TrimRightChar('XXYYZZABCXYZ', 'XYZABC'));
Check(#9'AAA', TrimRightChar(#9'AAA'#9, #9));
Check(#9, TrimRightChar(#9'AAA', 'A'));
Check(#9'AAA', TrimRightChar(#9'AAA'#13#10, #13#10));
Check(#13#10, TrimRightChar(#13#10#9'AAA', #9'A'));
Check('123', TrimRightChar('123', ''));
end;
procedure testTrimChar;
begin
Check('ABC', TrimChar('123467829ABC5212694192', '0123456789'));
Check('', TrimChar('123467829ABC5212694192', 'ABC0123456789'));
Check('ソスソスソスソスソスソスソスソスソスソス', TrimChar('ソスソスソスソスソスソスソスソスソスソスソスソスソスソスソスソスソスソスソスソスソスソスソスソスソスソスソスソスソスソスソスソスソスソスソスソスソスソスソスソス', 'ソスソスソスソスソスソスソスソスソスソス'));
Check('AAA', TrimChar(#9'AAA'#9, #9));
Check(#9, TrimChar(#9'AAA', 'A'));
Check(#9'AAA', TrimChar(#9'AAA'#13#10, #13#10));
Check(#13#10, TrimChar(#9'AAA'#13#10, #9'A'));
Check('123', TrimChar('123', ''));
end;