c# - 如何使用 String.IndexOf 方法找到正确的值?

标签 c# regex string winforms indexof

我想让我的句子像下面这样,但是我如何使用 String.IndexOf 方法找到 MINVALUE 的正确值,以便在给定条件下从句子中的值更改开始?

句子

CREATE SEQUENCE "MY_TEST_SEQUENCE" MINVALUE 8 MAXVALUE 999 INCREMENT BY 1 START WITH 55 CACHE 20 NOORDER NOCYCLE

结果

CREATE SEQUENCE "MY_TEST_SEQUENCE" MINVALUE 8 MAXVALUE 999 INCREMENT BY 1 START WITH 8 CACHE 20 NOORDER NOCYCLE

条件

  1. 如果 MINVALUE 具有正值 (8) 则从与以下值相同的值开始 最小值 (8)...
  2. 如果 MINVALUE 具有负 (-8) 值,则从与 MAXVALUE (999) 相同的值开始

我的代码

var startvalue = 0;
if(MINVALUE > 0)
{
    startvalue = MINVALUE;
}
Else if(MINVALUE < 0)
{
    startvalue = MAXVALUE;
}
var result = String.Format(@"CREATE SEQUENCE ""MY_TEST_SEQUENCE"" MINVALUE 8 MAXVALUE 999 INCREMENT BY 1 START WITH {0}  CACHE 20 NOORDER NOCYCLE",startvalue)

最佳答案

我认为这对你有用;

string sentence = @"CREATE SEQUENCE 'MY_TEST_SEQUENCE' MINVALUE -8 MAXVALUE 999 INCREMENT BY 1 START WITH 55 CACHE 20 NOORDER NOCYCLE";
string pattern = @".*\s+MINVALUE[ ]*(?<MinValue>[-?\d]*)[ ]*MAXVALUE[ ]*(?<MaxValue>[\d]*)";
Regex rgx = new Regex(pattern);
Match match = rgx.Match(sentence);
Group gp1 = match.Groups[1];//-8 or 8 (both valid).
Group gp2 = match.Groups[2];//Value after MAXVALUE.
if (gp1.Value.StartsWith("-") == false)//No minus sign,that must be a positive value.
{
  string s2 = string.Format(@"CREATE SEQUENCE ""MY_TEST_SEQUENCE"" MINVALUE 8 MAXVALUE 999  INCREMENT BY 1 START WITH {0} CACHE 20 NOORDER NOCYCLE", gp1.Value);
  MessageBox.Show(s2);
}

else if (gp1.Value.StartsWith("-") == true)//No need for further checking, a value with - will always be smaller.
{
  string s2 = string.Format(@"CREATE SEQUENCE ""MY_TEST_SEQUENCE"" MINVALUE 8 MAXVALUE 999 INCREMENT BY 1 START WITH {0} CACHE 20 NOORDER NOCYCLE", gp2.Value);
  MessageBox.Show(s2);
}

关于c# - 如何使用 String.IndexOf 方法找到正确的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18690897/

相关文章:

c# - 将多个参数传递给 BeginInvoke()

c# - 在圆上转录多边形

sql - 从配置单元表或 unix 中删除垃圾字符

javascript - 如何用正则表达式获取最后一段?

java - String 和 Stringbuilder 之间的区别(与连接无关)

c - 什么是 ;随机字符串;在C中表示

c# - FormsAuthentication Membership.GetUser() 空

c# - 在 Azure Function V4 中配置 Azure KeyVault 端点

javascript - 用于输入类型编号的 Angular 8 验证器

c++ - 在文本文件中搜索字段名称并将所有后续行返回到控制台 - C++