Visual studio C# 字符串 trim
Visual studio C# string trim
大家好
我一直在做一个项目,我偶然发现了一个问题;字符串不会 trim 正确。正如您在图片中看到的那样,我只想从字符串中获取数字。第一张图片来自程序的启动(trimming 工作正常),最后一张图片是我实际需要从中获取数字的地方。
https://imgur.com/a/mi5yo
(不能post图片因为我没有10代表)
在代码中
HtmlElementCollection TD = b[i].GetElementsByTagName("td");
string FirstString = TD[1].InnerText; //which is "??(?131?|?26?)?? "
Console.WriteLine("2. FirstString: " + FirstString);
string[] SecondString = FirstString.Trim('?', ')', '(', ' ').Split('|');
Console.WriteLine("SecondString1 " + SecondString[0].Trim('?'));
Console.WriteLine("SecondString2 " + SecondString[1].Trim('?'));
下面是我在 visual studio
中收到的警告
CropFinder.exe (CLR v4.0.30319: CropFinder.exe): Loaded C:\Windows\assembly\GAC\Microsoft.mshtml.0.3300.0__b03f5f7f11d50a3a\Microsoft.mshtml.dll'. Module was built without symbols.
提前感谢您的帮助,埃里克
您可以使用正则表达式。
using System.Text.RegularExpressions
int number;
String result =Regex.Replace(FirstString, @"[^\d]", "");
int.TryParse(result,number);
您从 HTML 收到的字符很可能实际上不是 ?
个字符,而是一些无法在控制台输出中正确显示的字符,因此显示 ?
。
要准确查看您实际收到的字符,以便您能够相应地修改代码,枚举它们并输出它们的代码:
foreach ( char character in FirstString )
{
Console.WriteLine( (byte)character );
}
如果比较自定义字符串和 HTML 的输出,您会发现字符代码不同。然后你可以根据代码进行修剪:
FirstString.Trim( ( char )characterCode );
其中 characterCode
是输出的字符代码。
更好的解决方案
作为修剪的替代解决方案,您应该考虑从结果中提取数字:
static void Main(string[] args)
{
string FirstString = "??(?131?|?26?)??";
var parts = FirstString.Split('|');
Console.WriteLine(ExtractNumber(parts[0]));
Console.WriteLine(ExtractNumber(parts[1]));
Console.ReadLine();
Console.ReadLine();
}
private static int ExtractNumber(string text)
{
var numberString = String.Join("", text.Where(Char.IsNumber));
int result = 0;
int.TryParse(numberString, out result);
return result;
}
我正在使用 Where
LINQ 扩展方法 select 仅输入中的数字字符。然后我使用 Join
将数组转回字符串(使用空字符串作为分隔符)。最后我正在做一个 int.TryParse
尝试将结果数字转换为 int
.
如果您使用的是 C# 7,则可以进一步简化代码:
private static int ExtractNumber(string text)
{
var numberString = String.Join("", text.Where(Char.IsNumber));
int.TryParse(numberString, out var result);
return result;
}
out
变量可以在 C# 7 中内联声明。
大家好
我一直在做一个项目,我偶然发现了一个问题;字符串不会 trim 正确。正如您在图片中看到的那样,我只想从字符串中获取数字。第一张图片来自程序的启动(trimming 工作正常),最后一张图片是我实际需要从中获取数字的地方。
https://imgur.com/a/mi5yo (不能post图片因为我没有10代表)
在代码中
HtmlElementCollection TD = b[i].GetElementsByTagName("td");
string FirstString = TD[1].InnerText; //which is "??(?131?|?26?)?? "
Console.WriteLine("2. FirstString: " + FirstString);
string[] SecondString = FirstString.Trim('?', ')', '(', ' ').Split('|');
Console.WriteLine("SecondString1 " + SecondString[0].Trim('?'));
Console.WriteLine("SecondString2 " + SecondString[1].Trim('?'));
下面是我在 visual studio
中收到的警告CropFinder.exe (CLR v4.0.30319: CropFinder.exe): Loaded C:\Windows\assembly\GAC\Microsoft.mshtml.0.3300.0__b03f5f7f11d50a3a\Microsoft.mshtml.dll'. Module was built without symbols.
提前感谢您的帮助,埃里克
您可以使用正则表达式。
using System.Text.RegularExpressions
int number;
String result =Regex.Replace(FirstString, @"[^\d]", "");
int.TryParse(result,number);
您从 HTML 收到的字符很可能实际上不是 ?
个字符,而是一些无法在控制台输出中正确显示的字符,因此显示 ?
。
要准确查看您实际收到的字符,以便您能够相应地修改代码,枚举它们并输出它们的代码:
foreach ( char character in FirstString )
{
Console.WriteLine( (byte)character );
}
如果比较自定义字符串和 HTML 的输出,您会发现字符代码不同。然后你可以根据代码进行修剪:
FirstString.Trim( ( char )characterCode );
其中 characterCode
是输出的字符代码。
更好的解决方案
作为修剪的替代解决方案,您应该考虑从结果中提取数字:
static void Main(string[] args)
{
string FirstString = "??(?131?|?26?)??";
var parts = FirstString.Split('|');
Console.WriteLine(ExtractNumber(parts[0]));
Console.WriteLine(ExtractNumber(parts[1]));
Console.ReadLine();
Console.ReadLine();
}
private static int ExtractNumber(string text)
{
var numberString = String.Join("", text.Where(Char.IsNumber));
int result = 0;
int.TryParse(numberString, out result);
return result;
}
我正在使用 Where
LINQ 扩展方法 select 仅输入中的数字字符。然后我使用 Join
将数组转回字符串(使用空字符串作为分隔符)。最后我正在做一个 int.TryParse
尝试将结果数字转换为 int
.
如果您使用的是 C# 7,则可以进一步简化代码:
private static int ExtractNumber(string text)
{
var numberString = String.Join("", text.Where(Char.IsNumber));
int.TryParse(numberString, out var result);
return result;
}
out
变量可以在 C# 7 中内联声明。