我找到了以下链接,但它适用于C#: c# Check if all Strings in a String List are the Same.
我编写了一个可以完成其余工作的代码,但它只能在排序字符串列表中正常运行。
此致
function StringListStrCheck(const S: String; StringList: TStringList): Boolean;
var
CurrentString: Integer;
begin
if StringList = nil then
RaiseException('The StringList specified does not exist');
if StringList.Count = 0 then
RaiseException('The specified StringList is empty');
if StringList.Count = 1 then
RaiseException('The specified StringList does not contain multiple Strings');
Result := False;
CurrentString := 1;
Repeat
if (CompareStr( S, StringList.Strings[CurrentString]) = -1) then begin
Result := False;
end;
if (CompareStr( S, StringList.Strings[CurrentString]) = 0) then begin
Result := True;
end;
CurrentString := CurrentString + 1;
Until CurrentString > (StringList.Count - 1 );
end;
如果指定字符串与指定字符串列表中的所有其他字符串相同,则返回True。
否则返回False。
但问题是,如果给定的字符串列表已排序或其字符串没有空格,则只能正确检查。如果给定String List中的任何字符串或所有字符串都有空格,则必须对其进行排序。否则,即使存在不相等的字符串,例如Your Aplication
和Your ApplicationX.
示例
此StringList在其任何字符串中都没有空格:
var
TestingList1: TStringList;
TestingList1 := TStringList.Create;
TestingList1.Add('CheckNow');
TestingList1.Add('DontCheckIt');
if StringListStrCheck('CheckNow', TestingList1) = True
then
Log('All Strings are the same');
else
Log('All Strings are not the same.');
它正确返回False,可以在Log中的输出消息中看到。
此StringList在其字符串中包含空格:
var
TestingList2: TStringList;
TestingList2 := TStringList.Create;
TestingList2.Add('Check Now');
TestingList2.Add('Check Tomorrow');
TestingList2.Add('Dont Check It');
if StringListStrCheck('Check Now', TestingList1) = True
then
Log('All Strings are the same');
else
Log('All Strings are not the same.');
但是,即使这些字符串不相同,它也会返回True。
但是,在我按下面排序之后,该函数正常工作并按预期返回False。
TestingList2.Sorted := True;
TestingList2.Duplicates := dupAccept;
我想知道为什么如果给定的StringList的字符串有空格或者给定StringList没有排序,这个函数失败了,并且还想知道如果给定的StringList如何使这个函数不失败有空格和/或给定的StringList没有排序。
在此先感谢您的帮助。
答案 0 :(得分:2)
只需在循环前将True
设置为False
即可。
在循环中,一旦任何字符串不匹配,就将其设置为Result := True;
CurrentString := 1;
Repeat
if (CompareStr( S, StringList.Strings[CurrentString]) <> 0) then begin
Result := False;
Break;
end;
CurrentString := CurrentString + 1;
Until CurrentString > (StringList.Count - 1 );
。
Trim
如果要忽略前导和尾随空格,请使用In [31]: df = pd.DataFrame(np.random.randint(0, 5, (10, 2)), columns=['id','value'])
In [32]: df
Out[32]:
id value
0 2 4
1 4 0
2 3 1
3 4 2
4 4 1
5 2 3
6 1 0
7 3 2
8 2 2
9 1 1
In [33]: df.groupby('id')['value'].apply(lambda x: x.max() - x.min()).reset_index()
Out[33]:
id value
0 1 1
1 2 2
2 3 1
3 4 2
。
答案 1 :(得分:-1)
您可以尝试使用您的字符串进行检查,例如&#39;&#34; INSIDE DOUBLE DOTBLE QUOTATION MARKS&#34;&#39;。