如何只得到数字直到点?
How to get only numbers until the dot?
我只需要匹配此文本中 TOTAL SALES
之后的数字,它必须在第一个点处停止,并且必须避免任何特殊字符
想要的结果是800
更新:它适用于第一个,但如果有反引号则失败 Regex
TOTAL SALES � EUR � 800.0013�000.001�700TOTAL PURCHASEEUR90.007�500.00250.001�444.84
MARGIN EUR710.00
我做了这个但不知道如何继续:
(?<=TOTAL SALES)([^.]+)
有效,但与 EUR 和特殊字符匹配。
感谢任何帮助!谢谢
我真的不知道你为什么在这里使用正则表达式,我觉得它既不直接也不简洁。
您提供的字符串包含新段的标记 - 由于替换标记 (�
) 可能不是它的实际值,您可能需要调整字符值:
string test = "TOTAL SALES � EUR � 2'800.0013�000.001�700TOTAL PURCHASEEUR90.007�500.00250.001�444.84MARGIN EUR710.00";
string[] split = test.Split('\uFFFD');
double actualValue = Convert.ToDouble(Regex.Replace(split[2],"[^0-9.]",""));
Console.WriteLine(actualValue);;
输出:2800.0013
文化 en-us
。
通过这种方式,您还可以更轻松地使用适当的数据类型,在本例中为双精度数据类型。
鉴于此格式在这一点上是静态的,实际上依靠拆分数组的索引是合法的。
但是,如果您想要确保始终获得总销售额,或者掩码可能不总是静态的,您甚至可以使用简单的 substring
/ indexOf
组合:
var start = test.IndexOf("TOTAL SALES");
var dotIndex = test.IndexOf('.',start);
for(int i = dotIndex; i >= 0; i--)
{
if(test[i].Equals(' '))
{
start = i+1;
break;
}
}
string stringValue = test.Substring(start,dotIndex-start);
stringValue = Regex.Replace(stringValue,"[^0-9]","");
Console.WriteLine(Convert.ToInt32(stringValue));
输出:2800
.
我只需要匹配此文本中 TOTAL SALES
之后的数字,它必须在第一个点处停止,并且必须避免任何特殊字符
想要的结果是800
更新:它适用于第一个,但如果有反引号则失败 Regex
TOTAL SALES � EUR � 800.0013�000.001�700TOTAL PURCHASEEUR90.007�500.00250.001�444.84
MARGIN EUR710.00
我做了这个但不知道如何继续:
(?<=TOTAL SALES)([^.]+)
有效,但与 EUR 和特殊字符匹配。
感谢任何帮助!谢谢
我真的不知道你为什么在这里使用正则表达式,我觉得它既不直接也不简洁。
您提供的字符串包含新段的标记 - 由于替换标记 (�
) 可能不是它的实际值,您可能需要调整字符值:
string test = "TOTAL SALES � EUR � 2'800.0013�000.001�700TOTAL PURCHASEEUR90.007�500.00250.001�444.84MARGIN EUR710.00";
string[] split = test.Split('\uFFFD');
double actualValue = Convert.ToDouble(Regex.Replace(split[2],"[^0-9.]",""));
Console.WriteLine(actualValue);;
输出:2800.0013
文化 en-us
。
通过这种方式,您还可以更轻松地使用适当的数据类型,在本例中为双精度数据类型。
鉴于此格式在这一点上是静态的,实际上依靠拆分数组的索引是合法的。
但是,如果您想要确保始终获得总销售额,或者掩码可能不总是静态的,您甚至可以使用简单的 substring
/ indexOf
组合:
var start = test.IndexOf("TOTAL SALES");
var dotIndex = test.IndexOf('.',start);
for(int i = dotIndex; i >= 0; i--)
{
if(test[i].Equals(' '))
{
start = i+1;
break;
}
}
string stringValue = test.Substring(start,dotIndex-start);
stringValue = Regex.Replace(stringValue,"[^0-9]","");
Console.WriteLine(Convert.ToInt32(stringValue));
输出:2800
.