我有一个这样的字符串:
{something:something}Some data will be here
下面是它的设置:
{username:password}data
如何获取{username:password}部分并将其从完整字符串中删除?我需要检查用户名和密码,然后将数据({something:something}之后的所有内容)发送给用户。
最好我想获得用户名:密码而没有{}所以我可以分开:
答案 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)
您可以先使用substring
和index 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;
}
此方法返回您要查找的值的索引(例如@ str
和nth
位置ex)2将返回 克里斯@所以@ SK @ 强>
这可以用于子串Strings
也许这会奏效:
string x= "{username:password}data";
string username = x.substring(1,IndexoOfNth(x,":",0)-1);