我遇到了如何从文本中获取特定字符串值的问题。例如:对于给定的string
"400X500 abc"
如何从该文本中获取一些string
,如:
string width = "400"
string height = "500"
非常感谢你的帮助。
最好的祝福,
樱桃特朗
您可以尝试使用正则表达式来提取数字
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 : "";
你可以尝试这样的事情:
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;
如果您可以假设它将始终采用该格式,您可以执行以下操作:
string raw = "400X500";
string width = raw.Substring(0, raw.IndexOf("X"));
string height = raw.Substring(raw.IndexOf("X") + 1);
现在width="400"
和height=500
。
假设文本总是采用“100X200 aabdsafgds”格式,那么工作解决方案将类似于:
var value = "100X200 aabdsafgds";
var splitValues = value.Split(new[] { 'X', ' ' }, StringSplitOptions.RemoveEmptyEntries);
var value1 = splitValues[0];
var value2 = splitValues[1];
我假设输入字符串始终采用相同的格式。
“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());
我相信你可以根据需要进行调整。
编辑:
我调整了代码以避免注释中指出的问题,并确保您只从字符串中获取数字