如何从axb之类的文本中获取a和b值?

时间:2019-03-14 10:06:39

标签: c# string

我正面临如何从文本获取特定的字符串值的问题。例如:对于给定的string

"400X500 abc"

如何从诸如此类的文本中获取一些string

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

非常感谢您的帮助。

最好的问候,

Cherry Truong

5 个答案:

答案 0 :(得分: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 : "";

答案 1 :(得分: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;

答案 2 :(得分: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());

我确定您可以根据需要进行调整。

编辑:

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

答案 3 :(得分:0)

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

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

现在width="400"height=500

答案 4 :(得分:0)

假设文本始终采用“ 100X200 aabdsafgds”格式,那么有效的解决方案应类似于:

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