-4

我有类似的东西HDKLFKEHR######LDKFRLEK

外部部分(含义:HDKLFKEHRLDKFRLEK)永远不会改变,但######总是会改变。

如何######从字符串中提取?

4

4 回答 4

3
string s = "HDKLFKEHR######LDKFRLEK";
string part = s.Substring(9, 6);

如果中间部分的长度可以改变,请执行以下操作:

string part = s.Substring(9, s.IndexOf("LDKFRLEK") - 9);
于 2013-09-10T01:33:43.410 回答
1
string input = "HDKLFKEHR######LDKFRLEK";
string sub = input.Substring(9);//sub would be ######LDKFRLEK
    string sub = sub.substring (0, sub.length - 8)


Console.WriteLine("Substring: {0}", sub);
    output :  ######

希望这有帮助谢谢

于 2013-09-10T01:39:00.263 回答
1
var result = "HDKLFKEHR######LDKFRLEK".TrimStart("HDKLFKEHR".ToCharArray()).TrimEnd("LDKFRLEK".ToCharArray());
于 2013-09-10T02:30:16.557 回答
1

我发现正则表达式对于字符串搜索和替换非常有用。

以下控制台应用程序示例显示了如何为此使用正则表达式(这可以灵活地更改内部字符串以及 HDKLFKEHR 和 LDKFRLEK 周围的文本):

class Program
{
    static readonly Regex re = new Regex( @"HDKLFKEHR(.+)LDKFRLEK", RegexOptions.Compiled );                        
    static void Main()
    {            
        Match match = re.Match( "HDKLFKEHR######LDKFRLEK"  );
        if( match.Success )
        {
            var innerText = match.Groups[1].ToString();
            Console.WriteLine( innerText ); //######
        }
}

它的工作方式是:

  • “HDKLFKEHR(.+)LDKFRLEK”是匹配的字符串,其中 .+ 表示 1 个或多个字符,(.+) 表示这是匹配中的一个组。
  • match.Groups[1] 是比赛中的第二组,即 (.+)。第一组是完全匹配的字符串。

如果这是您要对字符串进行大量操作的操作,那么您可以考虑进行扩展以灵活地处理不同的封闭字符串:

public static class StringExtensions
{
    public static string EnclosedTextSearch(this string theString, string left, string right)
    {
        Regex re = new Regex( left + @"(.+)" + right, RegexOptions.Compiled );                        
        string searchResult = "";
        if( String.IsNullOrEmpty(theString) == false )
        {
            Match match = re.Match( theString );
            if( match.Success )
            {
                searchResult = match.Groups[1].ToString();                
            }
        }
        return searchResult;
    }
}

那么用途是:

string theStringToSearch = "SomeOuterTextHDKLFKEHR######LDKFRLEKSomeotheroutertext";
string enclosedText = theStringToSearch.EnclosedTextSearch( "HDKLFKEHR", "LDKFRLEK" );
Console.WriteLine( enclosedText ); //######

以下示例显示了一些边界情况:

string theStringToSearch2 = "SomeOuterTextHDKLFsdKEHR######LDKsafsFRLEKSomeotheroutertext";
string enclosedText2 = theStringToSearch2.EnclosedTextSearch( "HDKLFKEHR", "LDKFRLEK" );
Console.WriteLine( enclosedText2); //empty

string theStringToSearch3 = "";
string enclosedText3 = theStringToSearch3.EnclosedTextSearch( "HDKLFKEHR", "LDKFRLEK" );
Console.WriteLine( enclosedText3 ); //empty

string theStringToSearch4 = "SomeOuterTextHDKLFKEHRLDKFRLEKSomeotheroutertext";
string enclosedText4 = theStringToSearch4.EnclosedTextSearch( "HDKLFKEHR", "LDKFRLEK" );
Console.WriteLine( enclosedText4 ); //empty

string theStringToSearch5 = null;
string enclosedText5 = theStringToSearch5.EnclosedTextSearch( "HDKLFKEHR", "LDKFRLEK" );
Console.WriteLine( enclosedText5 ); //empty

string theStringToSearch6 = "SomeOuterTextHDKLFKEHRLDKFRLEKSomeotheroutertext";
string enclosedText6 = theStringToSearch6.EnclosedTextSearch( null, null );
Console.WriteLine( enclosedText6 ); //full string returned: "SomeOuterTextHDKLFKEHRLDKFRLEKSomeotheroutertext"

希望这会有所帮助。

于 2013-09-10T02:32:00.680 回答