我有一个字符串;
string str = "3+4*2+8";
此字符串由用户输入.. 我想做一个我只想删除字符串的最后一个条目的操作。即在这个特定的例子中..... 请指导我如何做到这一点....
答案 0 :(得分:3)
如果您所谈论的只是具有正整数的简单算术表达式,那么您可以使用
Regex.Replace(str, @"([+*/-]|[0-9]+)$", "")
测试:
PS Home:\> '3+4*2+8' -replace '([+*/-]|[0-9]+)$'
3+4*2+
PS Home:\> '3+4*2+' -replace '([+*/-]|[0-9]+)$'
3+4*2
PS Home:\> '1-42' -replace '([+*/-]|[0-9]+)$'
1-
答案 1 :(得分:0)
您始终可以在输入中找到最后一位非数字字符,并从那里删除所有其他字符 所以基本上:
这是一个非常简单的例子
public static string TrimLastEntry(string text)
{
// input is valid ?, check any additional rules of your own....
if (string.IsNullOrEmpty(text))
{
return text;
}
// get last index of a non digit char
int idx = text.Length - 1;
for (; idx > 0; --idx)
{
if (!char.IsDigit(text[idx]))
{
break;
}
}
// replace the last
return text.Remove(idx + 1);
}
这肯定需要对允许的输入及其结构进行更多验证,但应该给你一个起点
答案 2 :(得分:0)
要删除“last”条目,您需要定义最后一个条目。
例如,3*(1+2)
是2
,(1+2)
还是*(1+2)
?
您是否会在这些表达式中包含文字:
"Hello" + " " + "world!"
会很容易,但
"This is an expression: " + "1 + \"a\""
使用正则表达式可能会更难处理。
在当天,在XML之前,我们有一个工具可以让您创建词法扫描程序,以便您可以创建语言然后分析或操作它们。查看Flex。
与往常一样,维基百科在Lexical Analysis上有很好的条目。