如何在字符串中找到运算符?在那之后,我想创建得到左边和右边的变量。
如果字符串是:
DisengagementPoint = TravelForce
或
DisengagementPoint = 100
但有些时间字符串更长,如:
DisengagementPoint = 100(VehicleSpeed> 2)|| (EngineRpm == 0)
我想创建一个字符串,其中包含“=”左侧的任何内容和一个右侧的字符串,我该怎么做?
我期望的输出:
var1 = DisengagementPoint
var2 = 100或TravelForce
var3 =(VehicleSpeed> 2)|| (EngineRpm == 0)
对不起,这很伪,但希望这是有道理的。
答案 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);