在数组中存储字符串中的整数值



在这个问题中,我提到我正在使用包含单独integer值的strings,如下所示:"18 37 237" .话虽如此,在我的程序中,我需要对这些integers具有个人访问权限,以便我可以将它们打印到文件中。我猜最好的方法是将它们存储在一个integer array中,其大小取决于string中有多少ints

这些是我目前对这个问题的目标:

-大小integer array基于string中有多少ints

- 用ints加载array(可能使用某种Regex方法)

我的问题是,我将如何编写这些目标?解决上述目标后,我应该可以了。

更新:为了消除混淆,我想指出我所有的字符串都包含其他非数字字符,其中大多数实际上看起来像:"SampleText 12 23 34"。很抱歉最初没有解决这个问题。

您可能希望在使用 int 之前过滤序列。解析:

var ints = str
           .Split()
           .Where(x => x.All(char.IsDigit))
           .Select(int.Parse)
           .ToArray();

char.IsDigit通常是一个不错的选择,但它允许所有数字,而不仅仅是拉丁数字(从 0 到 9),如果您只想允许从 09 的数字,这里是更可取的方法:

var digits = new[] {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9'};
var ints = str
          .Split()
          .Where(x => x.All(digits.Contains))
          .Select(int.Parse)
          .ToArray();

您可以使用以下代码:

var ints = str.Split(' ').Select(x => int.Parse(x)).ToArray();

我这样做的方法是使用 String.Splitint.TryParse .

string[] strings = myString.Split( new string[]{ " " }, StringSplitOptions.RemoveEmptyEntries );
int[] ints = new int[ strings.Length ];
for( int i = 0; i < ints.Length; ++i )
{
    if( !int.TryParse( strings[i], out ints[i] )
    {
          // error
    }
}

如果你真的想要一个数组,并且你的整数总是空格分隔的:

string[] seperateInts = testString.Split(' ');
int[] intArray = new int[seperateInts.Length];
for (int i = 0; i < seperateInts.Length; i++)
   int.TryParse(seperateInts[i], out intArray[i]);

列表可能是更好的解决方案:

List<int> intList = new List<int>();
foreach (string s in testString.Split(' ');
{
   int parsedInt = 0;
   //Avoid bad ints
   if (int.TryParse(s, out parsedInt))
      intList.Add(parsedInt);
}

这个正则表达式将做你所期望的

var subject = "18 37 237";
var regex = new Regex(@"d+");
var myInts = regex.Matches(subject)
         .Cast<Match>()
         .Select(x=> int.Parse(x.Value))
         .ToArray();
string s  = "18 37 SomeText 237";
string[] resultOfSplit = s.Split(' ');
List<int> intList = List<int>();
for (var i=0; i<resultOfSplit.Length;i++)
    {
        int temp=0;
        if(Int.TryParse(resultOfSplit[i],out temp))
        {
            intList.Add(temp);
        }            
    }
// Below line to convert the list to an array
int[] intArray = intList.ToArray();

因此,您需要使用 .Split() 和 .TryParse()

更新了代码以跳过数组中的非整数值

相关内容

  • 没有找到相关文章

最新更新