在c#中拆分特殊字符串

本文关键字:字符串 拆分 | 更新日期: 2023-09-27 18:25:01

我想用给定的输出拆分下面的字符串。有人能帮我做这件事吗。

示例

  1. /测试/测试123

输出:/Test/

  1. /TEST1/测试/测试/测试/

输出:/Test1/

  1. /文本/12121/1212/

输出:/Text/

  1. /121212121/asdfasdf/

输出:/12121121/

  1. 12345

输出:12345

我试过string.split函数,但效果不好。我有什么想法或逻辑可以实现这种情况吗。如果正则表达式中的答案对我来说很好。

在c#中拆分特殊字符串

您只需要/ Spiting的第一个结果

string output = input.Split('/')[0];

但如果您有//TEST/,并且输出应该是/TEST,则可以使用regex。

string output = Regex.Matches(input, @"'/?(.+?)'/")[0].Groups[1].Value;

对于你的第五种情况:你必须把逻辑分开。例如:

public static string Method(string input)
{
    var split = input.Split(new[] {'/'}, StringSplitOptions.RemoveEmptyEntries);
    if (split.Length == 0) return input;
    return split[0];
}

或者使用regex。

public static string Method(string input)
{
    var matches = Regex.Matches(input, @"'/?(.+?)'/");
    if (matches.Count == 0) return input;
    return matches[0].Groups[1].Value;
}

使用方法的一些结果

TEST/54/    =>   TEST
TEST        =>   TEST
/TEST/      =>   TEST

我认为这会起作用:

    string s1 = "/TEST/TEST123";
    string s2 = "/TEST1/Test/Test/Test/";
    string s3 = "/Text/12121/1212/";
    string s4 = "/121212121/asdfasdf/";
    string s5 = "12345";
    string pattern = @"'/?[a-zA-Z0-9]+'/?";
    Console.WriteLine(Regex.Matches(s1, pattern)[0]);
    Console.WriteLine(Regex.Matches(s2, pattern)[0]);
    Console.WriteLine(Regex.Matches(s3, pattern)[0]);
    Console.WriteLine(Regex.Matches(s4, pattern)[0]);
    Console.WriteLine(Regex.Matches(s5, pattern)[0]);
   class Program
    {
        static void Main(string[] args)
        {
            string example = "/TEST/TEST123";
            var result = GetFirstItem(example);
            Console.WriteLine("First in the list : {0}", result);
        }
        static string GetFirstItem(string value)
        {
            var collection = value?.Split(new char[] { '/' }, StringSplitOptions.RemoveEmptyEntries);
            var result = collection[0];
            return result;
        }
    }

StringSplitOptions.RemoveEmptyEntries是一个枚举,它告诉Split函数,当它将字符串拆分为数组时,如果数组中有空字符串元素,则函数不应在结果中包含空元素。基本上,您希望集合只包含值。

public string functionName(string input)
{
    if(input.Contains('/'))
    {
        string SplitStr = input.Split('/')[1];
        return "/"+SplitStr .Substring(0, 1) +SplitStr.Substring(1).ToLower()+"/"
    }
    return input;
}
output = (output.Contains("/"))? '/' +input.Split('/')[1]+'/':input;
private void button1_Click(object sender, EventArgs e)
{
    string test = @"/Text/12121/1212/";
    int first = test.IndexOf("/");
    int last = test.Substring(first+1).IndexOf("/");
    string finall = test.Substring(first, last+2);
}

我将此代码与您的所有示例进行了比较,并得到了正确的输出。试试这个。

以下方法可能会对您有所帮助。

 public string getValue(string st)
 {
     if (st.IndexOf('/') == -1)
         return st;
     return "/" + st.Split('/')[1] + "/";
 }