我正面临如何从文本获取特定的字符串值的问题。例如:对于给定的string
"400X500 abc"
如何从诸如此类的文本中获取一些string
:
string width = "400"
string height = "500"
非常感谢您的帮助。
最好的问候,
Cherry Truong
答案 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];