【问题标题】:Finding whole number in string在字符串中查找整数
【发布时间】:2020-07-17 08:19:06
【问题描述】:

我有一个输入数字。假设是 545。现在我有例如这个字符串:string trying = "658;984;756;545;2000;5450" 你可以看到这个字符串中有545,但也有5450 我只想找到我的输入号码,即545 但在我当前的代码也找到了5450。我当前的代码:

MySet.MyRole = "658;984;756;545;2000;5450";
if (MySet.MyRole is null || MySet.MyRole.IsEmpty())
{
           setupSet.MyRole1 = true;
}
else if (MySet.MyRole.Contains(Number.ToString()))
{
            setupSet.MyRole1 = true;
}

【问题讨论】:

  • (";" + MySet.MyRole + ";").Contains(";545;")MySet.MyRole.Split(';').Contains("545") 但是,如果您打算多次对相同的角色进行此检查,您可能应该将其拆分并放入更好的数据结构中,例如 @ 987654329@ 或类似号码。
  • 如果先拆分成数组,就不会。我在评论中写的两种方式都不会返回 5450 作为匹配项。我也在第一种情况下寻找周围的分号,第二种情况根本没有这个问题。如果您在循环中执行此操作,这两种方法在性能方面都有缺点,但它们都应该完全按照您的意愿执行。

标签: c# c#-4.0 c#-3.0


【解决方案1】:

我猜你可以Split

返回一个字符串数组,其中包含此实例中的子字符串 由指定字符串或 Unicode 的元素分隔的 字符数组。

然后使用Contains

确定一个元素是否在列表中。

var input = "658;984;756;545;2000;5450";

var result = input.Split(';').Contains("545");

【讨论】:

  • 我不能包含,因为那样它也会标记我的“重复”
  • @ShadeBlaze 您正在对一组分隔值执行Contains
  • .Contains(x) 在数组上会寻找等于 x 的元素,它不会寻找包含 x 的元素,所以它会找到 545 而不是 5450。.Contains(x) 在字符串上是不同于数组上的.Contains(x)
  • 感谢您的回答,我已经在此代码上对其进行了测试:string Trying= "115;12;122;11"; if (Trying.Split(';').Contains("1")) { Console.WriteLine("I dont work"); } else { Console.WriteLine("I work"); } 我工作得很好!那谢谢啦!接受我的投票并批准:)
猜你喜欢
  • 1970-01-01
  • 2022-01-21
  • 1970-01-01
  • 2011-01-31
  • 2020-11-27
  • 2012-04-09
  • 2012-01-16
  • 1970-01-01
  • 2020-06-19
相关资源
最近更新 更多