在字符串中找到运算符并获取左右单词

本文关键字:获取 左右 单词 运算符 字符串 | 更新日期: 2023-09-27 18:34:45

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

如果字符串为:

脱离点=旅行部队

脱离点=100

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

脱离点=100 (车速>2( ||(发动机转速== 0(

我想创建一个字符串,其中包含

"="左侧的任何内容和一个右侧的字符串,我该怎么做?

我期望的输出:

var1 = 脱离点

var2 = 100 或 TravelForce

var3 = (车速>2( ||(发动机转速== 0(

抱歉,这是非常伪的,但希望它是有道理的。

在字符串中找到运算符并获取左右单词

我想在其他出色的答案中添加两件事:

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 检查是否只有一个相等或更多,如果更多,则检查它们是否至少有两个在自己身后。

正如@Dmitry@AustinWBryan在对 Bychenko 的帖子的评论中提到的,这开始看起来像解析器问题,在我看来这是一个有点不同的问题。

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

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);
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);
}

正如德米特里·比琴科所提到的

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

可以替换为

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