在字符串中查找运算符并获得左右字

时间:2016-02-16 14:50:16

标签: c#

如何在字符串中找到运算符?在那之后,我想创建得到左边和右边的变量。

如果字符串是:

  

DisengagementPoint = TravelForce

  

DisengagementPoint = 100

但有些时间字符串更长,如:

  

DisengagementPoint = 100(VehicleSpeed> 2)|| (EngineRpm == 0)

我想创建一个字符串,其中包含“=”左侧的任何内容和一个右侧的字符串,我该怎么做?

我期望的输出:

  

var1 = DisengagementPoint

     

var2 = 100或TravelForce

     

var3 =(VehicleSpeed> 2)|| (EngineRpm == 0)

对不起,这很伪,但希望这是有道理的。

3 个答案:

答案 0 :(得分:2)

我想在其他优秀答案中添加两件事:

A)string.Split将字符串除以所有等号,因此DisengagementPoint=100会很好,但line = "DisengagementPoint=100 (VehicleSpeed>2) || (EngineRpm== 0)"会变得非常混乱,因为只用字符串string[] split = line.Split('=')分割会产生阵列:

split[0] = "DisengagementPoint"
split[1] = "100 (VehicleSpeed>2) || (EngineRpm"
split[2] = ""
split[3] = " 0)"

这可以通过限制最大分割数来消除line.Split('=', 2)最多返回两个子字符串。而line.Split('=', StringSplitOptions.RemoveEmptyEntries)也可以帮助摆脱空白部分,但在这种情况下这不会是一个问题。

B)比较运算符==的问题是什么? Perheaps检查是否只有一个等于或等于一个,如果有更多,如果其中至少有两个正好在它们后面。

正如@Amitry Bychenko在@AustinWBryan发表的评论中提到的,这开始看起来是解析器问题,在我看来这是一个不同的问题。

答案 1 :(得分:1)

找到=位置并获取子字符串:

String source = "DisengagementPoint=100";

int index = source.IndexOf('=');

// you may want to test if there's '=' in the string
// if (index >= 0) ...   

String left = source.Substring(0, index);
String right = source.Substring(index + 1);

答案 2 :(得分:1)

var word = "DisengagementPoint=TravelForce";
var index = word.IndexOf("=");

if(index > 1)
{
    var left  = word.Substring(0, index);
    var right = word.Substring(index + 1,word.Length - index - 1);
}

DmitryBychenko提到

var right = word.Substring(index + 1,word.Length - index - 1);

可以替换为

var right = word.Substring(index + 1);