首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >替换string[]职位

替换string[]职位
EN

Stack Overflow用户
提问于 2014-02-03 10:32:58
回答 5查看 85关注 0票数 0

下一个例子是:

用户输入示例:"1 +3-2* 4“

代码语言:javascript
复制
string input = Console.ReadLine();
string[] getElement = input.split(' ');

//So I can have
//getElement[0] = 1
//getElement[1] = +
//getElement[2] = 3
//...

//I have a "for()" cicle here and at one moment I have the following instruction:

if(getElement[i] == "+")
    int add = Convert.ToInt32(getElement[i - 1]) + Convert.ToInt32(getElement[i + 1]);
    //In this example it means: add = 1 + 3

我的问题是,我如何才能删除的位置,[0],[1],[2]string[] getElement,并将它们替换为“添加”价值?

在这种情况下,我不知道如何使用Replace()。我需要调整数组的大小吗?需要建议。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2014-02-03 10:42:21

就像这样:

代码语言:javascript
复制
string input = Console.ReadLine();
string[] getElement = input.split(' ');

if(getElement[i] == "+")
{
    int add = Convert.ToInt32(getElement[i - 1]) + Convert.ToInt32(getElement[i + 1]);
    input = input.Replace(getElement[i - 1] + ' ' + getElement[i] + ' ' + getElement[i + 1]),add.ToString())
}

这将从输入表达式中删除所有1+3,并将其替换为存储在add变量下的新值。

确保按照其他专家的建议处理indexOutOfRangeException

票数 1
EN

Stack Overflow用户

发布于 2014-02-03 10:38:32

您可以使用List<string>而不是数组。您可以像在数组中一样对列表中的各个部分进行寻址,还可以删除项。

只需确保您测试getElement[i - 1]getElement[i + 1]不会首先生成一个IndexOutOfRangeException .

注意:对于非常简单的操作(如示例中的操作),这是一种合理的方法,但是对于任何更复杂的操作--比如对括号或函数的支持--您将需要基于语法实现一个正确的解析器。您可以使用Gold解析系统构建这样的解析器(请参阅http://www.goldparser.org)。

票数 2
EN

Stack Overflow用户

发布于 2014-02-03 10:37:31

你可以用

代码语言:javascript
复制
input.Replace(string.Concat(element[0],element[1],element[2]),"Result")
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21524932

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档