C# Visual studio C字符串修剪

C# Visual studio C字符串修剪,c#,string,visual-studio-2017,trim,C#,String,Visual Studio 2017,Trim,大家好 我一直在做一个项目,我偶然发现了一个问题;绳子剪不好。正如您在图片中看到的,我只想从字符串中获取数字。第一张图片来自程序的启动,修剪工作正常,最后一张图片是我实际需要从中获取数字的地方 无法发布图片,因为我没有10个代表 和代码 HtmlElementCollection TD = b[i].GetElementsByTagName("td"); string FirstString = TD[1].InnerText; //which is "??(?131?|?26?)?? " C

大家好

我一直在做一个项目,我偶然发现了一个问题;绳子剪不好。正如您在图片中看到的,我只想从字符串中获取数字。第一张图片来自程序的启动,修剪工作正常,最后一张图片是我实际需要从中获取数字的地方

无法发布图片,因为我没有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('?'));
下面是我在VisualStudio中得到的警告

CropFinder.exe (CLR v4.0.30319: CropFinder.exe): Loaded C:\Windows\assembly\GAC\Microsoft.mshtml\7.0.3300.0__b03f5f7f11d50a3a\Microsoft.mshtml.dll'. Module was built without symbols.

提前感谢您的帮助,Erik

您可以使用正则表达式

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扩展方法仅从输入中选择数字字符。然后我使用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变量可以在C7中内联声明。

您不需要发布图像,您可以将其复制并粘贴为文本。非常感谢!我把这个装饰弄得乱七八糟已经有两个小时了,我自己都想不出来!