通过第一次和最后一次出现的字符来获取和删除字符串的一部分

时间:2017-07-04 18:01:15

标签: c#

我有一个这样的字符串:

{something:something}Some data will be here

下面是它的设置:

{username:password}data

如何获取{username:password}部分并将其从完整字符串中删除?我需要检查用户名和密码,然后将数据({something:something}之后的所有内容)发送给用户。

最好我想获得用户名:密码而没有{}所以我可以分开:

3 个答案:

答案 0 :(得分:1)

这是一个正则表达式解决方案:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            string input = "{something:something}Some data will be here";

            string pattern = @"\{(?'username'[^:]+):(?'password'[^\}]+)\}(?'data'.*)";

            Match match = Regex.Match(input,pattern);

            Console.WriteLine("Username : '{0}', Password : '{1}', Data : '{2}'",
                match.Groups["username"].Value, match.Groups["password"].Value, match.Groups["data"].Value);
           Console.ReadLine();
        }
    }
}

答案 1 :(得分:0)

您可以先使用substringindex of删除不需要的字符。

string input = {username:password}data
input = input.Substring(input.IndexOf("}") +1);   //data

这将为您提供数据部分假设}仅出现一次。

答案 2 :(得分:0)

 public int IndexOfNth(string str, string value, int nth)
        {
            int offset = str.IndexOf(value);
            for (int i = 0; i < nth; i++)
            {
                if (offset == -1) return -1;
                offset = str.IndexOf(value, offset + 1);
            }
            return offset;
        }

此方法返回您要查找的值的索引(例如@ strnth位置ex)2将返回 克里斯@所以@ SK @

这可以用于子串Strings

也许这会奏效:

string x= "{username:password}data";
string username = x.substring(1,IndexoOfNth(x,":",0)-1);