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 ...
随机推荐
- Browser-use:基于 Python 的智能浏览器自动化 AI 工具调研与实战
Browser-use:基于 Python 的智能浏览器自动化 AI 工具调研与实战 一.概述 Browser-use 是一个旨在将 AI "智能体"(Agents)与真实浏览器进 ...
- APT32 RTC+低功耗调试笔记
1.项目需求 采用APT32F1023单片机,内部27K时钟驱动RTC,内部6M定时器作为主频.周期检测外部供电是否恢复,如果恢复则使用正常工作模式,否则仅开启RTC,关闭其他外设,进入低功耗待 ...
- 记录 Windows关闭自动更新
- 强化学习框架:OpenRLHF源码解读,模型处理
强化学习框架:OpenRLHF源码解读,模型处理 本文主要介绍 强化学习框架:OpenRLHF源码解读,模型处理 models框架设计 了解一下 OpenRLHF的模型框架设计范式: From:htt ...
- 《基于改进Wallace树的Posit乘法单元优化》(一)
原文 文章通过增加特定的计数器.重新设计部分积求和阶段计数器布局 以及改进最终求和阶段使用的加法器,提出一种名为3L-Wallace树的改进Wallace树算法,有效减少了部分积求和的阶段数, 从而降 ...
- webapi——Postman添加post请求测试
1.设置Post格式 2.设置传值方式json 3.设置参数 4.发送请求
- 信息资源管理综合题之“LJ集团信息化项目规划问题”
一.LJ集团是北京的一家规模巨大的房地产投资公司,早在15年前,该公司出现了如下几个问题:每个业务员手上的用户资料,其他人无法得知,从而导致员工离职时会流失大量潜在客户:业务员繁忙的时候,无法满足客户 ...
- C#之BitConverter.ToInt16
byte[] bytes = { 1,3 }; short s = BitConverter.ToInt16(bytes,0); Console.WriteLine(s); 从低位到高位填充: 000 ...
- C# 文件系统
检查驱动器信息 DriveInfo[] drives = DriveInfo.GetDrives(); foreach(var drive in drives) { if (drive.IsReady ...
- 论文解读:Aging with GRACE: Lifelong Model Editing with Discrete Key-Value Adapters
论文发表于人工智能顶会NeurIPS(原文链接).当前的模型编辑器会因多次编辑损害模型性能,提出用于连续编辑的通用检索适配器(General Retrieval Adapters for Cont ...