C# 正则匹配键盘行(或列)连续字符 ,3连连续字符匹配
https://blog.csdn.net/qq_20173195/article/details/126989662 参考
using System; public class Program
{
public static void Main()
{
Console.WriteLine(CheckKeyboardContinuousChar(",./"));
} public static bool CheckKeyboardContinuousChar(string str)
{
char[][] c1 = {
new char[] { '!', '@', '#', '$', '%', '^', '&', '*', '(', ')', '_', '+' },
new char[] { 'q', 'w', 'e', 'r', 't', 'y', 'u', 'i', 'o', 'p', '{', '}', '|' },
new char[] { 'a', 's', 'd', 'f', 'g', 'h', 'j', 'k', 'l', ':', '"' },
new char[] { 'z', 'x', 'c', 'v', 'b', 'n', 'm', '<', '>', '?' }
};
char[][] c2 = {
new char[] { '1', '2', '3', '4', '5', '6', '7', '8', '9', '0', '-', '=' },
new char[] { 'q', 'w', 'e', 'r', 't', 'y', 'u', 'i', 'o', 'p', '[', ']', '\\' },
new char[] { 'a', 's', 'd', 'f', 'g', 'h', 'j', 'k', 'l', ';', '\'' },
new char[] { 'z', 'x', 'c', 'v', 'b', 'n', 'm', ',', '.', '/' }
}; str = str.ToLower();
char[] strArray = str.ToCharArray();
int[] y = new int[strArray.Length];
int[] x = new int[strArray.Length]; for (int c = 0; c < strArray.Length; c++)
{
y[c] = 0; // 当做~`键处理
x[c] = -1;
for (int i = 0; i < c1.Length; i++)
{
for (int j = 0; j < c1[i].Length; j++)
{
if (strArray[c] == c1[i][j])
{
y[c] = i;
x[c] = j;
}
}
} if (x[c] != -1)
{
continue;
} for (int i = 0; i < c2.Length; i++)
{
for (int j = 0; j < c2[i].Length; j++)
{
if (strArray[c] == c2[i][j])
{
y[c] = i;
x[c] = j;
}
}
}
} for (int c = 1; c < strArray.Length - 1; c++)
{
if (y[c - 1] == y[c] && y[c] == y[c + 1]) // 横着同一行
{
if ((x[c - 1] + 1 == x[c] && x[c] + 1 == x[c + 1]) || (x[c + 1] + 1 == x[c] && x[c] + 1 == x[c - 1]))
{
return true;
}
}
if (x[c - 1] == x[c] && x[c] == x[c + 1]) // 竖着同一列
{
if ((y[c - 1] + 1 == y[c] && y[c] + 1 == y[c + 1]) || (y[c + 1] + 1 == y[c] && y[c] + 1 == y[c - 1]))
{
return true;
}
}
if ((x[c - 1] + 1 == x[c] && x[c] + 1 == x[c + 1]) || (x[c - 1] - 1 == x[c] && x[c] - 1 == x[c + 1]))
{
if ((y[c - 1] + 1 == y[c] && y[c] + 1 == y[c + 1]) || (y[c + 1] + 1 == y[c] && y[c] + 1 == y[c - 1]))
{
return true;
}
}
} return false;
}
}
C# 正则匹配键盘行(或列)连续字符 ,3连连续字符匹配的更多相关文章
- Python正则匹配多行,多个数据
最近用Python做一个crawler工具的时候,发现用一个正则表达式可以匹配到个数据的时候用match.group()只能打印出第一个数据,其它数据不能打印出来.最后找到解决方法,现在记录一下,直接 ...
- oracle行转列、列转行、连续日期数字实现方式及mybatis下实现方式
转载请注明出处:https://www.cnblogs.com/funnyzpc/p/9977591.html 九月份复习,十月份考试,十月底一直没法收心,赶在十一初 由于不可抗拒的原因又不得不重新找 ...
- js正则匹配多行文本
原文:https://lwebapp.com/zh/post/regular-expression-to-match-multiple-lines-of-text 需求 最近有小伙伴提了个需求,想用正 ...
- [Js/Jquery]table行转列
摘要 在使用ews调用exhange的收件箱的并在h5页面显示邮件详情的时候,因为返回的每封邮件的内容都是htmlbody,没有textbody.每封邮件又没什么规律,用正则表达式来匹配内容并不合适, ...
- Python正则处理多行日志一例
正则表达式基础知识请参阅<正则表达式基础知识>,本文使用正则表达式来匹配多行日志并从中解析出相应的信息. 假设现在有这样的SQL日志: SELECT * FROM open_app WHE ...
- table行转列
table行转列 摘要 在使用ews调用exhange的收件箱的并在h5页面显示邮件详情的时候,因为返回的每封邮件的内容都是htmlbody,没有textbody.每封邮件又没什么规律,用正则表达式来 ...
- List实现行转列的通用方案
最近在做报表统计方面的需求,涉及到行转列报表.根据以往经验使用SQL可以比较容易完成,这次决定挑战一下直接通过代码方式完成行转列.期间遇到几个问题和用到的新知识这里整理记录一下. 阅读目录 问题介绍 ...
- FPGA计算3行同列数据之和
实验:FPGA计算3行同列数据之和 实验要求:PC机通过串口发送3行数据(一行有56个数据,3行共有56*3=168个数据)给FPGA,FPGA计算3行同一列数据的和,并将结果通过串口返回给上位机. ...
- List,DataTable实现行转列的通用方案
最近在做报表统计方面的需求,涉及到行转列报表.根据以往经验使用SQL可以比较容易完成,这次决定挑战一下直接通过代码方式完成行转列.期间遇到几个问题和用到的新知识这里整理记录一下. 阅读目录 问题介绍 ...
- Linux提取不匹配字符串的行和列(awk函数)
如下图所示,想把含有‘-nan’字符串的行提取出来 则用到awk函数,命令行如下: awk '{if($3!="-nan"){print $3}}' CHB_vs_ITU.weir ...
随机推荐
- FastAPI 核心功能的完整示例代码,涵盖 WebSocket、后台任务、生命周期事件、中间件配置及会话管理
以下是一个整合 FastAPI 核心功能的完整示例代码,涵盖 WebSocket.后台任务.生命周期事件.中间件配置及会话管理.代码结构参考了多个技术文档的最佳实践: from contextlib ...
- 主存的扩展及其与CPU的连接——字扩展
一块芯片的容量为\(2^{18}B\),而该CPU需要的容量为:\(2^{地址总线位宽}\)=\(2^{21}B\),所以需要8片该芯片来扩展. 由于CPU由21个地址引脚,芯片只有18个地址引脚,C ...
- C#之值类型与引用类型--out参数--ref参数-"=="、Equals和ReferenceEquals之间的区别
一.值类型和引用类型 1.值类型 (1)值类型的大小是固定的 (2)值类型都派生自ValueType (3)值类型不能继承,只能实现接口 2.值类型:int.char.double.float.lon ...
- pytorch 实战教程之路径聚合网络PANet(Path AggregationNetwork)代码实现 PANet原理详解
原文作者:aircraft 原文链接:pytorch 实战教程之路径聚合网络PANet(Path AggregationNetwork)代码实现 PANet原理详解 学习YOLOv5前的 ...
- 适用于LixtBox的,开启UI虚拟化时,某些时候需要定位到还没加载的项,比如自动选中某项,视图自动移过去等等
1 /// <summary> 2 /// 将指定父级的下级索引元素,显示在视野下,使其可见 3 /// </summary> 4 /// <param name=&qu ...
- ragflow k8s部署详细过程
一.概述 ragflow官方提供的安装方式是docker-compose方式部署的,单机运行. k8s部署方式,暂未提供. 不过我们可以通过工具,结合docker-compose.yaml,来推演出对 ...
- x86花指令
花指令 参考: https://bbs.kanxue.com/thread-279604.htm#msg_header_h3_21 两种反编译算法 线性扫描算法:逐行反汇编(无法将数据和内容进行区分) ...
- jsp页面的跳转
服务器端和客户端跳转 服务器端跳转不改变URL,服务器的行为 客户端跳转改变URL,客户端的行为 项目目录 index.jsp <%@ page language="java" ...
- Linux 的那些操作都出自哪里?
Linux 的那些操作都出自哪里? 可以说 Linux 是一种 Unix.Unix 有一个 man 手册,手册包含了安装的软件的使用帮助,遇到问题的解决办法.总之几乎所有的操作都是手册里面有迹可循的, ...
- 【工具】没有人能拒绝这三种PDF阅读方式!打造良好的夜间PDF阅读环境,解放你的双眼!White is too harsh!
方式一和二都适用于常规的浏览器, 方式三是最最好用的PDF阅读器推荐. 方式一:f12改css 步骤一:打开开发者工具(f12). 步骤二:点击选择PDF所在元素,在style里面加一行filter: ...