c# 如何提取字特定的符串

{姓名 = 张三,性别 = 女,年龄 = 15},
如何分别提取 张三、女、15

这里的格式是 JSON 格式,你可以使用 JSON 解析库来解析 JSON 字符串,并获取指定的字段值。下面是一个示例代码:

using System;
using Newtonsoft.Json.Linq;

class Program
{
    static void Main()
    {
        string json = "{\"姓名\":\"张三\",\"性别\":\"\",\"年龄\":15}";

        JObject obj = JObject.Parse(json);
        Console.WriteLine(obj["姓名"]);
        Console.WriteLine(obj["性别"]);
        Console.WriteLine(obj["年龄"]);
    }
}

输出结果为:

张三
女
15

在上面的代码中,我们使用了 Newtonsoft.Json 解析库来解析 JSON 字符串,并使用 JObject 类来获取指定的字段值。你可以根据自己的需求对代码做出相应修改。

可以使用正则表达式进行提取。

using System;
using System.Text.RegularExpressions;

class Program{
    static void Main(string[] args){
        string input = "{姓名 = 张三,性别 = 女,年龄 = 15}";
        // 定义正则表达式,用于匹配字符串中的姓名、性别和年龄
        string pattern = @"\{姓名\s*=\s*(?<name>\S+),\s*性别\s*=\s*(?<gender>\S+),\s*年龄\s*=\s*(?<age>\d+)\}";
        // 进行正则表达式匹配
        Match match = Regex.Match(input, pattern);
        if (match.Success){
            // 提取匹配结果中的姓名、性别和年龄
            string name = match.Groups["name"].Value;
            string gender = match.Groups["gender"].Value;
            int age = int.Parse(match.Groups["age"].Value);

            Console.WriteLine("姓名:{0}", name);
            Console.WriteLine("性别:{0}", gender);
            Console.WriteLine("年龄:{0}", age);
        }else{
            Console.WriteLine("字符串格式错误!");
        }
    }
}

该回答通过自己思路及引用到GPTᴼᴾᴱᴺᴬᴵ搜索,得到内容具体如下:
你可以使用C#中的字符串操作方法和正则表达式来提取特定的子字符串。

下面是使用正则表达式的示例代码,可以从给定的字符串中提取姓名、性别和年龄:

using System;
using System.Text.RegularExpressions;

class Program {
    static void Main() {
        string input = "{姓名 = 张三,性别 = 女,年龄 = 15}";
        
        // 使用正则表达式匹配姓名、性别和年龄
        string pattern = @"姓名\s*=\s*(\w+),\s*性别\s*=\s*(\w+),\s*年龄\s*=\s*(\d+)";
        Match match = Regex.Match(input, pattern);
        
        // 提取匹配到的姓名、性别和年龄
        string name = match.Groups[1].Value;
        string gender = match.Groups[2].Value;
        string age = match.Groups[3].Value;
        
        Console.WriteLine("姓名: " + name);
        Console.WriteLine("性别: " + gender);
        Console.WriteLine("年龄: " + age);
    }
}

输出:

姓名: 张三
性别: 女
年龄: 15

在这个示例中,使用了一个正则表达式来匹配给定字符串中的姓名、性别和年龄。正则表达式中的\w+匹配任意字母、数字或下划线的一个或多个字符,\d+匹配一个或多个数字。\s*匹配零个或多个空格字符。()用于捕获匹配的子字符串。

Match对象的Groups属性提供了一个集合,其中包含了所有匹配的子字符串以及它们所在的位置。在这个示例中,使用了Groups集合中的索引来获取姓名、性别和年龄的值。


如果以上回答对您有所帮助,点击一下采纳该答案~谢谢

引用ChatGPT部分和自己理解回答:
使用C#可以使用字符串的Split()方法进行分割,然后再使用SubString()方法进行提取。

方法如下:

string input = "{姓名 = 张三,性别 = 女,年龄 = 15}";

// 分割字符串
string[] arr = input
    .Replace("{", "") // 去除前缀 "{"
    .Replace("}", "") // 去除后缀 "}"
    .Split(',');      // 按逗号分割

// 遍历数组,提取每个元素中的值
foreach (string str in arr)
{
    string value = str.Substring(str.IndexOf("=") + 1).Trim();
    Console.WriteLine(value);
}

输出结果:

张三
女
15

解释:

上述代码中,首先使用Replace()方法去除字符串的前缀和后缀,然后使用Split()方法按逗号分割字符串,得到一个字符串数组。接着遍历数组,对每个元素使用SubString()方法提取出其中的值。具体做法是先找到等号的位置,然后从等号的下一个字符开始提取,最后再使用Trim()方法去除空格。

基于newbing的编写:
法一:字符串分割实现


using System;

class Program
{
    static void Main(string[] args)
    {
        string infoStr = "{姓名:张三,性别:男,年龄:15}";
        string[] infoArr = infoStr.Split(',');
        foreach (string item in infoArr)
        {
            if (item.Contains("姓名"))
            {
                string name = item.Substring(4);
                Console.WriteLine(name);
            }
            else if (item.Contains("性别"))
            {
                string gender = item.Substring(4);
                Console.WriteLine(gender);
            }
            else if (item.Contains("年龄"))
            {
                string age = item.Substring(4);
                Console.WriteLine(age);
            }
        }
        Console.ReadLine();
    }
}

运行结果:

张三
男
15

法二:正则表达式实现


using System;
using System.Text.RegularExpressions;

class Program
{
      ()
    {
        string infoStr = "{姓名:张三,性别:男,年龄:15}";
        string pattern = @"{姓名:(.*?),性别:(.*?),年龄:(.*?)}";
        Match match = Regex.Match(infoStrpattern);
        if (match.Success)
        {
            string name = match.Groups[1].Value;
            string gender = match.Groups[2].Value;
            string age = match.Groups[3].Value;
            Console.WriteLine(name);
            Console.WriteLine(gender);
            Console.WriteLine(age);
        }
        Console.ReadLine();
    }
}

结果和上面一样

为json字符串 ,转为json 然后获取就可以

using System;
using Newtonsoft.Json.Linq;

class Program
{
    static void Main()
    {
        string json = "{\"姓名\":\"张三\",\"性别\":\"\",\"年龄\":15}";

        JObject obj = JObject.Parse(json);
        Console.WriteLine(obj["姓名"]);
        Console.WriteLine(obj["性别"]);
        Console.WriteLine(obj["年龄"]);
    }
}
```c#


```

最直接的方式,首先根据,分割成为三个字符串,然后循环遍历,再根据 = 分割这三个字符串(姓名 = 张三),
比如分割后为 姓名 ,张三
然后取分割后数组的第二个元素就是需要的字符串,
最后用逗号拼接就行了

key value 键值对,获取value得值
也可以用正则来写

如果要提取 "{姓名 = 张三,性别 = 女,年龄 = 15}" 中的 "张三"、"女" 和 "15",可以使用正则表达式进行匹配和提取。

C# 实现:

using System;
using System.Text.RegularExpressions;

string input = "{姓名 = 张三,性别 = 女,年龄 = 15}";

// 使用正则表达式匹配并提取需要的字符串
string name = Regex.Match(input, @"姓名\s*=\s*(\S+),").Groups[1].Value;
string gender = Regex.Match(input, @"性别\s*=\s*(\S+),").Groups[1].Value;
string age = Regex.Match(input, @"年龄\s*=\s*(\d+)").Groups[1].Value;

Console.WriteLine("姓名:" + name);
Console.WriteLine("性别:" + gender);
Console.WriteLine("年龄:" + age);


上述代码中,我们使用了 Regex.Match() 方法来对输入字符串进行正则表达式匹配,并使用括号将需要提取的子串作为一个捕获组。然后,我们可以从 Match.Group 属性中取出所需的字符串并输出结果。

运行以上代码,可以得到如下结果:

姓名:张三
性别:女
年龄:15

引用chatGPT作答,您可以使用 C# 的字符串处理函数来提取这些特定的字符串。

以下是一个示例代码,它将上述字符串分别提取为姓名、性别和年龄:

string input = "{姓名 = 张三,性别 = 女,年龄 = 15}";

// 提取姓名
int startIndex = input.IndexOf("姓名") + 4; // 找到“姓名”字符串的位置,并添加 4(即姓名=后的空格数量)
int endIndex = input.IndexOf(",", startIndex); // 找到逗号的位置
string name = input.Substring(startIndex, endIndex - startIndex); // 使用 Substring 函数提取字符串
name = name.Trim(); // 去除首尾空格

// 提取性别
startIndex = input.IndexOf("性别") + 4; // 找到“性别”字符串的位置,并添加 4(即性别=后的空格数量)
endIndex = input.IndexOf(",", startIndex); // 找到逗号的位置
string gender = input.Substring(startIndex, endIndex - startIndex); // 使用 Substring 函数提取字符串
gender = gender.Trim(); // 去除首尾空格

// 提取年龄
startIndex = input.IndexOf("年龄") + 4; // 找到“年龄”字符串的位置,并添加 4(即年龄=后的空格数量)
endIndex = input.IndexOf("}", startIndex); // 找到“}”的位置
string age = input.Substring(startIndex, endIndex - startIndex); // 使用 Substring 函数提取字符串
age = age.Trim(); // 去除首尾空格

这里使用了 IndexOf 函数来查找特定字符串的位置,然后使用 Substring 函数提取子字符串,并使用 Trim 函数去除首尾空格。

Indexof用这个

可以使用正则表达式来提取字符串中的内容,具体实现如下:

string str = "{姓名 = 张三,性别 = 女,年龄 = 15}";
string pattern = @"(?<=姓名\s=\s)[^,]+|(?<=性别\s=\s)[^,]+|(?<=年龄\s=\s)\d+";
MatchCollection matches = Regex.Matches(str, pattern);
foreach (Match match in matches)
{
    Console.WriteLine(match.Value);
}

解释一下正则表达式的含义:

(?<=...) 表示正向零宽度断言,匹配 ... 前面的位置;
姓名\s=\s 匹配 姓名 = 字符串,\s 表示空白字符;
[^,]+ 匹配除逗号以外的一个或多个字符;
| 表示或者;
性别\s=\s 匹配 性别 = 字符串;
年龄\s=\s 匹配 年龄 = 字符串;
\d+ 匹配一个或多个数字。
最终输出结果为:

张三
女
15

在 C #中,可以使用 Dictionary < string , string >来存储这样的键值对数据,并通过键名提取对应的值。

img


上述代码先将包含键值对的字符串 info 拆分为多个字符串,然后再将每个字符串拆分为 key 和 value ,存储到一个 Dictionary < string , string >字典中。
最后可以通过 key 来提取对应的 value ,实现从字符串中提取特定信息的功能。
所以如果要提取"张三"、"女"和"15",直接用 dict ["姓名"]、 dict ["性别"]和 int . Parse ( dict ["年龄"])即可得到结果。