如何使用 substring
或其他方式删除字符串的最后一个字符?
例如:
var
query : String;
begin
query:= 'test=1&line=5&';
end;
输出必须是:
query -> test1&line=5
如何使用 substring
或其他方式删除字符串的最后一个字符?
例如:
var
query : String;
begin
query:= 'test=1&line=5&';
end;
query -> test1&line=5
第三个选择是这个:
SetLength(Query,LENGTH(Query)-1)
试试这个:
var
query : String;
begin
query:= 'test=1&line=5&';
delete(query,length(query),1);
我认为我会将其写成:
NewValue := OldValue.Substring(0, OldValue.Length - 1);
我认为函数接口,也就是返回新值的函数,通常比具有副作用的过程更可取。我发现赋值运算符是表明正在将新值分配给变量的明确指示器。使用函数方法使得在想要将新值存储在不同于原始值的变量中时,语法更加清晰简洁。
Copy(str, 1, length(str)-1)
。 - EProgrammerNotFoundLeftStr
。但是,我假设使用的是XE3或更高版本。 - David HeffernanTStringHelper.Remove()
来替代,例如:query.Remove(query.Length-1)
。 - Remy Lebeau我原本打算将这个方法用于另一个问题,名为“从字符串中删除最后5个字符”,虽然这可能不是最好的方法,但对于简单的字符串来说它是有效的,因为#0表示字符串的终止。
以你的例子为例:
Query[Length(Query)]:= #0;
对于我无法回复的其他主题示例
str[Succ(Length(str)) - 5]:= #0;
showmessage(str);
附言:我会投票支持 HeartWare 的答案,因为那是更可接受的做法。我只是展示了一个简单字符串的快速替代方案,可以产生期望的效果(主要是针对删除最后5个字符的其他主题)。
var
test: System.String;
begin
test := 'Sample Text To Delete Last Character;!';
test := Copy(test,1,length(test)-1);
ShowMessage(test);
end;
变量已经建立;
一个样本文本被提供给变量;
变量在复制命令中引用自身,
复制命令通过从索引1(长度)-1处复制变量字符串的长度来将其返回给变量本身;
消息用于显示结果;
结果将是没有感叹号的文本; // 要删除最后一个字符的示例文本;
SetLength(query, Length(query)-1);
的意思是将变量query
的长度减少 1。 - LU RD