C#判断代码片段为class还是method

判断代码片段是class还是method:

public partial class Form1 : Form{public Form1(){InitializeComponent();}private void button1_Click(object sender, EventArgs e){string codeSnippet1 = @"public class MyClass{bool b=false;public    void   MyMethod(){int i=0;// Method logic}}";string codeSnippet2 = @"public void MyMethod(){// Method logic}public void MyMethod1(){// Method logic}
";Console.WriteLine(IsClassOrFunction(codeSnippet1)); // Output: ClassConsole.WriteLine(IsClassOrFunction(codeSnippet2)); // Output: Function}static string IsClassOrFunction(string codeSnippet){// Regular expression to match a class definitionvar classRegex = new Regex(@"^\s*public\s+class\s+\w+", RegexOptions.Multiline);// Regular expression to match a method definitionvar methodRegex = new Regex(@"^\s*(public|private|protected|internal)?\s*(static\s+)?\w+\s+\w+\s*\(.*\)\s*\{", RegexOptions.Multiline);if (classRegex.IsMatch(codeSnippet)){return "Class";}else if (methodRegex.IsMatch(codeSnippet)){return "Function";}else{return "Unknown";}}}

抽取class代码中的成员变量和成员方法:

using System;
using System.Linq;
using Microsoft.CodeAnalysis;
using Microsoft.CodeAnalysis.CSharp;
using Microsoft.CodeAnalysis.CSharp.Syntax;class Program
{static void Main(){string codeSnippet = @"public class MyClass{public int MyField;private string _myPrivateField;public void MyMethod(){// Method logic}private void MyPrivateMethod(){// Method logic}}";AnalyzeClass(codeSnippet);}static void AnalyzeClass(string codeSnippet){// Parse the code snippetvar tree = CSharpSyntaxTree.ParseText(codeSnippet);var root = tree.GetRoot();// Find the class declarationvar classDeclaration = root.DescendantNodes().OfType<ClassDeclarationSyntax>().FirstOrDefault();if (classDeclaration != null){Console.WriteLine($"Class: {classDeclaration.Identifier.Text}");// Extract fields (member variables)var fields = classDeclaration.Members.OfType<FieldDeclarationSyntax>();Console.WriteLine("Fields:");foreach (var field in fields){var fieldType = field.Declaration.Type.ToString();foreach (var variable in field.Declaration.Variables){Console.WriteLine($"  {fieldType} {variable.Identifier.Text}");}}// Extract methodsvar methods = classDeclaration.Members.OfType<MethodDeclarationSyntax>();Console.WriteLine("Methods:");foreach (var method in methods){var returnType = method.ReturnType.ToString();Console.WriteLine($"  {returnType} {method.Identifier.Text}");}}else{Console.WriteLine("No class declaration found.");}}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/51316.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

shell-awk文本处理工具

1、awk概述 AWK 是一种处理文本文件的语言&#xff0c;是一个强大的文本分析工具。 它是专门为文本处理设计的编程语言&#xff0c;也是行处理软件&#xff0c;通常用于扫描、过滤、统计汇总工作 数据可以来自标准输入也可以是管道或文件 在 linux 上常用的是 gawk,awk …

NSS [NSSRound#18 Basic]easy_rw

NSS [NSSRound#18 Basic]easy_rw 题目描述&#xff1a;弱口令就完事了 入口&#xff1a;/dolphinscheduler 靶机启动需要1分钟。 这题有两种做法。CVE-2023-48796、CVE-2024-23320 先说CVE-2023-48796 Apache DolphinScheduler是一个分布式、易扩展、可视化的工作流任务调度…

MATLAB学习日志DAY22

动态字段名称 访问结构体中的数据的最常用方法是指定要引用的字段的名称。 访问结构体数据的另一种方法是使用动态字段名称。这些名称将字段表示为变量表达式&#xff0c;MATLAB 会在运行时计算这些表达式。此处显示的 点-括号 语法将 expression 作为动态字段名称&#xff1…

【redis】一致性hash算法和hash槽

普通hash取模 直接hash(key)%N , N为机器的数量&#xff0c;但不利于集器扩容或者缩容 一致性hash算法和hash槽 一致性hash算法是在redis 分片中使用&#xff0c;hash槽在redis cluster&#xff08;集群&#xff09;中使用 Redis一致性hash&#xff1a;Redis一致性hash是为…

前端获取当前年月日时分秒

getCurrentTime() {//改时间数据格式var currentTime new Date();const formattedDate ${currentTime.getFullYear()}-${this.padZero(currentTime.getMonth() 1)}-${this.padZero(currentTime.getDate())} ${this.padZero(currentTime.getHours())}:${this.padZero(currentTi…

Netdevops入门之Telnetlib语法案例

1、Telnetlib模块&#xff1a; 支持telnet/ssh远程访问的模块很多&#xff0c;常见的有telnetlib、ciscolib、paramiko、netmiko、pexpect,其中telnetlib和ciscolib对应telnet协议&#xff0c;后面3个对应SSH协议。 ①-通过ENSP环境搭建实验环境 ②-基础语法-telnetlib案例1&…

16现代循环神经网络—深度循环与双向循环

目录 1.深度循环神经网络回顾:循环神经网络总结简洁代码实现2.双向循环神经网络隐马尔可夫模型中的动态规划双向模型模型的计算代价及其应用总结代码实现1.深度循环神经网络 回顾:循环神经网络 如何将循环神经网络变深,以获得更多的非线性? 通过添加多个隐藏层的方式来实现…

解决git每次push代码到github都需要输入用户名以及密码

产生原因&#xff1a; 出现以上情况的主要原因在于采用的是 https 方式提交代码&#xff0c; 如果采用的是 ssh 方式只需要在版本库中添加用户的 sha 的key就可以实现提交时无需输入用户名和密码。 解决方法 在终端中使用以下命令删除原先已经建立的http的链接方式&#xff0c…

KCache-go本地缓存,支持本地缓存过期、缓存过期自维护机制。

GitHub - kocor01/kcache: go 本地缓存解决方案&#xff0c;支持本地缓存过期、缓存过期自维护机制。 最近系统并发很高&#xff0c;单接口10W的 QPS&#xff0c;对 redis 压力很大&#xff0c;大量的热KEY导致 redis 分片CPU资源经常告警。计划用 go 本地缓存缓解 redis 的压…

git实践汇总【配置+日常使用+问题解决】

**最初配置步骤&#xff1a;** git config --global user.name "yournemae" git config --global user.email "yourmail" git config -l ssh-keygen -t rsa -C “xxx.xxxx.EXTcccc.com” git config --global ssh.variant ssh $ git clone git仓库路径 git…

洗地机哪家好?四款洗地机好洗地机的品牌推荐

随着“懒人经济”的兴起&#xff0c;洗地机作为家居清洁领域的革新者&#xff0c;正逐步融入越来越多家庭的生活之中。面对市场上繁多的洗地机品牌与型号&#xff0c;消费者往往感到难以抉择&#xff1a;“洗地机哪个牌子最佳&#xff1f;”为了解答这一疑问&#xff0c;本文精…

KubeSphere介绍及一键安装k8s

KubeSphere介绍 官网地址&#xff1a;https://kubesphere.io/zh/ KubeSphere愿景是打造一个以 Kubernetes 为内核的云原生分布式操作系统&#xff0c;它的架构可以非常方便地使第三方应用与云原生生态组件进行即插即用&#xff08;plug-and-play&#xff09;的集成&#xff0…

C++ --> string类模拟实现(附源码)

欢迎来到我的Blog&#xff0c;点击关注哦&#x1f495; 前言&#xff1a; C中STL扮演着极其重要的角色&#xff0c;学习C重中之重的就是学习STL&#xff0c;虽然string不作为containers的其中一员&#xff0c;但是也是值得学习的le类。下面就进行string的模拟实现 string的模拟…

C++ | Leetcode C++题解之第284题窥视迭代器

题目&#xff1a; 题解&#xff1a; template <class T> class PeekingIterator : public Iterator<T> { public:PeekingIterator(const vector<T>& nums) : Iterator<T>(nums) {flag Iterator<T>::hasNext();if (flag) {nextElement Ite…

docker 的常用命令随笔

sudo docker --help docker build -t demo:v1 systemctl start docker service docker start sudo docker ps -a sudo docker images sudo docker restart xx&#xff08;容器名&#xff09; sudo docker exec -it xxx (容器名) bash sudo docker run -it xxx:xx(镜…

【MyBatis】基础操作

准备工作 准备数据库表创建 springboot工程&#xff0c;选择引入对应的起步依赖&#xff08;mybatis、mysql驱动、lombok&#xff09;application.properties中引入数据库连接信息创建对应的实体类 Emp&#xff08;实体类属性采用驼峰命名&#xff09;准备Mapper接口 EmpMappe…

【C语言】队列的实现(数据结构)

前言&#xff1a; 相信大家在生活中经常排队买东西&#xff0c;今天学习的队列就跟排队买东西一样&#xff0c;先来买的人就买完先走&#xff0c;也就是先进先出。废话不多说&#xff0c;进入咱们今天的学习吧。 目录 前言&#xff1a; 队列的概念 队列的实现 队列的定义 …

【es】多个中文无法模糊查询

es 的 text类型字段会分词处理&#xff0c;模糊查询有单个中文能查&#xff0c;多个中文就不行了 改为keyword类型 ES模糊查询失效的坑以及解决方案_java_脚本之家

DDR等长,到底长度差多少叫等长?

DDR4看这一篇就够了 - 知乎 (zhihu.com) 【全网首发】DDR4 PCB设计规范&设计要点PCB资源PCB联盟网 - Powered by Discuz! (pcbbar.com) 终于看到较为权威的DDR4等长要求了: !!!! 依据这个要求&#xff0c;H616项目的等长线不合格&#xff1a;

C/S架构和B/C架构

C/S架构&#xff08;Client/Server Architecture&#xff09;和B/C架构&#xff08;Browser/Client Architecture&#xff09;是两种不同 的软件架构模型&#xff0c;它们各自有不同的特点和应用场景。 一、C/S架构&#xff08;Client/Server Architecture&#xff09; 1. 定…