如何从像axb这样的文本中获取a和b值?

问题描述 投票:-2回答:5

我遇到了如何从文本中获取特定字符串值的问题。例如:对于给定的string

"400X500 abc"

如何从该文本中获取一些string,如:

string width = "400"
string height = "500"

非常感谢你的帮助。

最好的祝福,

樱桃特朗

c# string
5个回答
3
投票

您可以尝试使用正则表达式来提取数字

 using System.Text.RegularExpressions;

 ...

 string source = "400X500 abc";

 string[] numbers = Regex
   .Matches(source, "[0-9]+") 
   .OfType<Match>()
   .Select(match => match.Value)
   .ToArray(); 

 string width = numbers.ElementAtOrDefault(0) ?? "";
 string height = numbers.ElementAtOrDefault(1) ?? "";

或者(如果你想确定存在X分隔符)

  Match match = Regex
    .Match(source, @"([0-9]+)\s*X\s*([0-9]+)", RegexOptions.IgnoreCase);

  string width = match.Success ? match.Groups[1].Value : "";
  string height = match.Success ? match.Groups[2].Value : "";

0
投票

你可以尝试这样的事情:

string data = "400X500 abc";
string[] splitData = data.TrimEnd('a', 'b', 'c').Trim().Split('X');
string width = splitData[0] ?? string.Empty;
string height = splitData[1] ?? string.Empty;

0
投票

如果您可以假设它将始终采用该格式,您可以执行以下操作:

string raw = "400X500";
string width = raw.Substring(0, raw.IndexOf("X"));
string height = raw.Substring(raw.IndexOf("X") + 1);

现在width="400"height=500


0
投票

假设文本总是采用“100X200 aabdsafgds”格式,那么工作解决方案将类似于:

var value = "100X200 aabdsafgds";
var splitValues = value.Split(new[] { 'X', ' ' }, StringSplitOptions.RemoveEmptyEntries);
var value1 = splitValues[0];
var value2 = splitValues[1];

0
投票

我假设输入字符串始终采用相同的格式。

“heightXwidth abc”

var value = "400X500 abc";

var vals = value.Trim().Split('X');

var height = new string(vals[0] == null ? "0".ToArray() : vals[0].Where(char.IsDigit).ToArray());
var width = new string(vals[1] == null ? "0".ToArray() : vals[1].Where(char.IsDigit).ToArray());

我相信你可以根据需要进行调整。

编辑:

我调整了代码以避免注释中指出的问题,并确保您只从字符串中获取数字

© www.soinside.com 2019 - 2024. All rights reserved.