首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

scala-在奇数位置匹配控制字符

Scala是一种多范式编程语言,它结合了面向对象编程和函数式编程的特性。在Scala中,可以使用模式匹配来匹配控制字符。

控制字符是ASCII字符集中的一部分,它们用于控制文本的显示和处理。在奇数位置匹配控制字符意味着我们需要找到字符串中奇数索引位置上的控制字符。

在Scala中,可以使用模式匹配的方式来实现这个功能。下面是一个示例代码:

代码语言:txt
复制
def matchControlCharacters(str: String): Unit = {
  val controlCharacters = List('\n', '\t', '\r', '\f', '\b')
  
  str.zipWithIndex.foreach { case (char, index) =>
    if (index % 2 != 0 && controlCharacters.contains(char)) {
      println(s"Found control character '$char' at odd position $index")
    }
  }
}

val inputString = "Hello\nWorld\tScala\rProgramming"
matchControlCharacters(inputString)

在上面的代码中,我们首先定义了一个包含常见控制字符的列表。然后,使用zipWithIndex方法将字符串和索引位置进行配对。接下来,使用模式匹配来检查奇数索引位置上的字符是否为控制字符,并打印相应的信息。

这个功能的应用场景可以是在处理文本数据时,需要对特定位置上的控制字符进行处理或过滤。

腾讯云提供了多种云计算相关产品,但在这里不提及具体的产品和链接地址。你可以访问腾讯云官方网站,了解他们的云计算产品和服务。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Go-Excelize API源码阅读(十九)——SetHeaderFooter

ScaleWithDoc 设定页眉和页脚跟随文档缩放 OddFooter 奇数页页脚控制字符 OddHeader 奇数页页眉控制字符 EvenFooter 偶数页页脚控制字符 EvenHeader 偶数页页眉控制字符...FirstFooter 首页页脚控制字符 FirstHeader 首页页眉控制字符 接下来是OddHeader, OddFooter, EvenHeader, EvenFooter, FirstFooter...如果双下划线模式启用了, // | 一个章节中的下划线会关闭双下划线模式。...DifferentOddEven: true代表奇数和偶数页页眉和页脚是不同的。 OddHeader: "&R&P"代表奇数页的页眉右侧部分为当前十进制的页码。...OddFooter: "&C&F"代表奇数页的页脚中心部分为当前工作簿的文件名。 EvenHeader: "&L&P"代表偶数页的页眉左侧部分为当前十进制的页码。

1.2K30

实战 | WAF-Bypass之SQL注入绕过思路总结

①•可利用其他控制字符替换空格:%09、%0a、%0c、%0d、%16•位置②•可利用其他控制字符替换空格:%09、%0a、%0c、%0d•位置③•可利用其他控制字符替换空格:%09、%0a、%0c、%...•位置②•可利用其他控制字符替换空格:%00、%09、%0a、%0b、%0c、%0d•位置③•可利用其他控制字符替换空格:%00、%09、%0a、%0b、%0c、%0d•可使用其他字符:-、+、%ad•...•位置②•可利用其他控制字符替换空格:%09、%0a、%0c、%0d•位置③•可利用其他控制字符替换空格:%09、%0a、%0c、 %0d•可使用其他字符:....例如匹配函数”concat()”的规则写法,“concat(”或者”concat\s*(”,就没有考虑到一些特殊字符。相应的绕过方法,特殊位置引入特殊的分隔符,逐个测试。...畸形method绕过 某些WAF处理数据的时候严格按照GET、POST等标准HTTP方法来获取数据,或者采用正则匹配的方式来处理数据,可能因为WAF和WEB服务解析的前后不对等绕过WAF。

4.7K10
  • 计算机网络之数据链路层详解

    控制字符,用于标识该帧的开始,结束位置加了ETX控制字符,用于标识该帧的结束。...具体做法是:传输的二进制代码最后专门设置一个奇偶校验位,用它控制这组代码中1的个数为奇数或偶数(具体是偶数还是奇数,要视所采用的是偶校验还是奇校验),然后再在接收端进行校验,看里面的“1”的个数是否仍与原来一样的奇数或偶数...4、流量控制 “流量控制”包括两方面的含义: 一是发送端的数据发送速度与接收端的数据接收速度要匹配,否则接收端来不及接收就会造成数据传输过程中的丢失。...二是发送端的数据发送速度要与线路上的承载速率(与线路信道带宽有关)相匹配,否则也会造成数据传输过程中的丢失 “流量控制”实际上是对发送端数据传输速率的控制,使其数据发送速率不超过接收端所能承受的数据接收能力...物理网段: 指IP地址属于同一网络地址段(也就是IP地址中的网络ID一样),位于不同地理位置的不同LAN分段,是基于物理意义上的地理区域进行划分的。

    3.5K20

    实战 | WAF-Bypass之SQL注入绕过安全狗

    :news_id=1.0,news_id=1E0,news_id=\N •位置② •可以利用其它控制字符替换空格:%09,%0a,%0b,%0c,%0d,%20,%a0•可以利用注释符号替换空格:/**.../、%23test%0d%0a、 --+a%0d%0a•可以利用括号:union(select 1,2) •位置③ •可以利用其它控制字符替换空格:%09,%0a,%0b,%0c,%0d,%20,%a0...例如匹配函数”concat()”的规则写法,“concat(”或者”concat\s*(”,就没有考虑到一些特殊字符。相应的绕过方法,特殊位置引入特殊的分隔符,逐个测试。...[User]/**/where id=1 那么意味着注释符中可以添加大量的无效字符来打破WAF的规则匹配。...=1-1 位置② 可以利用其它控制字符替换空格:%01~%0F、%11~%1F 可以利用注释符号:/**/、—+a%0d%0a 可以利用加号+替换空格:union+select 位置③ 可以利用其它控制字符替换空格

    2.4K30

    Lua string.gsub (1)

    Lua中的模式匹配用正则表达式来描述,它被用于string.find, string.gmatch,string.gsub, 和string.match.匹配一种模式。...:(一个点)代表所有的字符; %a:代表所有的字母; %c:代表所有的控制字符;(自己百度控制字符) %d:代表所有数字; %g:代表除了空格字符的所有可以打印的字符; %l:代表所有的小写字符; %p...任何非字母数字表中的特殊字符都可以用一个百分号后面跟这个字符来进行模式匹配。 [Set]:表示用Set中的所有字符代表的一个字符集合。字符区间可以用“-”,以升序的方式,分隔它的最后的几个字母来表示。...上面讲述的用%x字符组合匹配代表的字符集合还可以用于其它字符集的元素。...你可以一个字符集中的开头位置放置一个].你也可以一个字符集的开头或者结束放置一个连字符。(你也可以两种情况中加入转义字符) 字符区间和字符集合有交叉的情况下,你写的模式匹配是错误的。

    96220

    3.格式IO

    7.可以%和定义转换字符之间通过插入修饰符为基本的转换说明加以修改。...2.一般形式:scanf(“格式控制字符串”,变量地址列表) 格式控制字符串:用于控制输入数据格式,必须以引号引导,内容由一个或多个格式控制字符组合而成,也可以含有非格式控制字符,非格式控制字符称为普通字符...普通字符按原样在对应位置输入。 变量地址列表:用于指定存放数据的变量地址。如果需要给多个变量输入数据,则各变量地址要用逗号隔开。变量地址表示方式是:&变量名。例如,&a表示变量a的地址。...它依次把转换说明与字段相匹配,并跳过它们之间的空格(当格式控制符为%c时例外)。 3)当scanf遇到不匹配数据类型的数据时,ANSI C要求函数第一个出错的地方停止读取输入。...10)Scanf函数的“格式控制字符串”中一般不使用转义字符,否则要按原样在对应位置从键盘输入,为输入数据带来不必要的麻烦。 三.

    93920

    八爪鱼采集软件正则表达式使用方法

    正则表达式(Regular Expression)描述了一种字符串匹配模式,可以用来检查一个字符串是否含有某种子串、将匹配子串做替换或者将匹配的子串提取出来等。...正则表达式语法=普通字符+特殊字符 普通字符=打印字符+非打印字符(元字符) 特殊字符=限定符+定位符 非打印字符:换页符(\f)、换行符(\n)、回车符(\r)、制表符(\t)、垂直制表符(\v)、控制字符...(\cM)、匹配任何空字符(\s)、匹配任何非空字符(\S) **()改为英文半角符号() 特殊字符: $:输入字符串结尾位置 ():标记一个子表达式开始于结束位置 *:前面的子表达式0次或者多次 +...:匹配前面的子表达式0次或者1次,非贪婪 :转义字符 ^:匹配输入字符串的开始位置 {、}:限定表达式开始的地方 限定符:*、+、?、{n}、{n,}、{n,m} *、+、?...区别:贪婪非贪婪 {n}、{n,}区别:匹配确定的次数与匹配至少的次数 例:

    1.9K20

    正则表达式--基本正则表达式

    匹配任意单个字符 [ ] 匹配指定范围内的任意单个字符 [^] 匹配指定范围外的任意单个字符 [:alnum:] 匹配任意数字或字母 [:alpha:] 匹配任意英文大小写字母 [:upper...键 [:cntrl:] 匹配不可打印的控制字符(退格、删除) [:digit:] 匹配0-9之间的任意单个数字 与[0-9]等效 [:xdigit:] 匹配十六进制数字 [:graph:] 匹配可打印的非空白字符...匹配前面的字符0次或1次 \+ 匹配前面的字符至少一次 \{n\} 匹配前面的字符n次,精确匹配 \{,n\} 匹配前面的字符至多nu次 \{n,\} 匹配前面的字符至少n次 \{m,n\}...匹配前面的字符至少m次,至多n次 位置锚定 字符 说明 备注 ^ 锚定行首 $ 锚定行尾 ^$ 匹配窄 \<或\b 锚定词首 \>或\b 锚定词尾 \ 匹配整个单词 \B 匹配非单词边界...,与\b相反 分组引用 字符 说明 备注 \( \) 分组 $1,$2 引用 分组中,一个括号为一组,$1开始,$2,$3...

    92820

    正则表达式--扩展正则表达式

    匹配任意单个字符 [ ] 匹配指定范围内的任意单个字符 [^] 匹配指定范围外的任意单个字符 [:alnum:] 匹配任意数字或字母 [:alpha:] 匹配任意英文大小写字母 [:upper...:] 匹配任意大写字母 与[A-Z]等效 [:lower:] 匹配任意小写字母 与[a-z]等效 [:blank:] 匹配空白字符(空格和制表符) [:space:] 匹配任意空白字符,包括空格或tab...键 [:cntrl:] 匹配不可打印的控制字符(退格、删除) [:digit:] 匹配0-9之间的任意单个数字 与[0-9]等效 [:xdigit:] 匹配十六进制数字 [:graph:] 匹配可打印的非空白字符...[:print:] 匹配可打印字符 [:punct:] 匹配任意标点符号 [^[:alpha:]] 匹配单个非字母字符 [^[:digit:]] 匹配单个非数字字符 次数匹配 字符 说明...匹配前面字符0次或1次 + 匹配前面字符至少一次 匹配前面字符m次 {m,n} 匹配前面字符至少m次,至多n次 位置锚定 字符 说明 备注 ^ 锚定行首 $ 锚定行尾 \< 或 \b 锚定词首

    75620

    正则表达式基本语法

    如果设置了 RegExp 对象的 Multiline 属性,^ 还会与“\n”或“\r”之后的位置匹配。$匹配输入字符串结尾的位置。...“er\B”匹配“verb”中的“er”,但不匹配“never”中的“er”。\cx匹配 x 指示的控制字符。\d数字字符匹配。等效于 [0-9]。\D非数字字符匹配。等效于 [^0-9]。...如果设置了 RegExp 对象的 Multiline 属性,^ 还会与“\n”或“\r”之后的位置匹配。 $ 匹配输入字符串结尾的位置。...\B 非字边界匹配。“er\B”匹配“verb”中的“er”,但不匹配“never”中的“er”。 \cx 匹配 x 指示的控制字符。 \d 数字字符匹配。等效于 [0-9]。 \D 非数字字符匹配。...\B 非字边界匹配。“er\B”匹配“verb”中的“er”,但不匹配“never”中的“er”。 \cx 匹配 x 指示的控制字符。 \d 数字字符匹配。等效于 [0-9]。 \D 非数字字符匹配

    95470

    蓝桥杯 基础训练 完美的代价--------------C语言—菜鸟级

    }//统计每个相同字符的数量 else //用于判断字符串能否构成字符串; { if(t%2==1)t1++;//若字符数量为奇数...else { i=0;//从第一位字符(0位)寻找对应字符;第一位对应最后一位 因此需找到与之匹配的字符换到最后一位 for(j=len-1;j>i;j--)//为次数最小则就近原则...从后向前查找遇到的第一个匹配字符则通过相邻字符交换 { for(t=j;t>i;t--)//到对应位置匹配字符位到与查找对应位置根据交换原则,交换后两个交换位置...if(a[t]==a[i])//之间 的字符循序不变 可视为移位插入法(i 对应位置 是j 匹配字符 是t;则从t交换 {sum+=j-t;//到j 则需 j-t 次;...// 且不是查找 中心(奇数)字符 的对应位 } // 则先将 中心(奇数

    32650

    正则表达式

    tab 键 [:cntrl:] 匹配不可打印的控制字符(退格、删除) [:digit:] 匹配 0-9 之间的任意单个数字 与 [0-9] 等效 [:xdigit:] 匹配十六进制数字 [:graph...匹配前面的字符 0 次或 1 次 \+ 匹配前面的字符至少一次 \{n\} 匹配前面的字符 n 次,精确匹配 \{,n\} 匹配前面的字符至多 nu 次 \{n,\} 匹配前面的字符至少 n 次...\{m,n\} 匹配前面的字符至少 m 次,至多 n 次 位置锚定 字符 说明 备注 ^ 锚定行首 $ 锚定行尾 ^$ 匹配空行 \< 或 \b 锚定词首 \> 或 \b 锚定词尾 \ 匹配整个单词 \B 匹配非单词边界,与 \b 相反 分组引用 字符 说明 备注 \( \) 分组 $1,$2 引用 分组中,一个括号为一组,$1 开始,$2,$3… 扩展正则表达式 字符匹配...匹配前面字符0次或1次 + 匹配前面字符至少一次 {m} 匹配前面字符m次 {m,n} 匹配前面字符至少m次,至多n次 位置锚定 与基本正则表达式相同 分组 字符 说明 备注 ( ) 分组

    7210

    正则表达式特殊字符

    非打印字符\cx 匹配由x指明的控制字符。例如, \cM 匹配一个 Control-M 或回车符。x 的值必须为 A-Z 或 a-z 之一。否则,将 c 视为一个原义的 'c' 字符。...\t 匹配一个制表符。等价于 \x09 和 \cI。\v 匹配一个垂直制表符。等价于 \x0b 和 \cK。COPY特殊字符$ 匹配输入字符串的结尾位置。...序列 '\\' 匹配 "\",而 '\(' 则匹配 "("。^ 匹配输入字符串的开始位置,除非在方括号表达式中使用,当该符号方括号表达式中使用时,表示不接受该方括号表达式中的字符集合。...COPY定位符^ 匹配输入字符串开始的位置。如果设置了 RegExp 对象的 Multiline 属性,^ 还会与 \n 或 \r 之后的位置匹配。$ 匹配输入字符串结尾的位置。...如果设置了 RegExp 对象的 Multiline 属性,$ 还会与 \n 或 \r 之前的位置匹配。\b 匹配一个单词边界,即字与空格间的位置。\B 非单词边界匹配

    1K20

    printf漏洞介绍

    printf(format,) 1、概念 printf接受变长的参数,其中第一个参数为格式化字符串,后面的参数实际运行时将与格式化字符串中特定的子字符串进行对应,将格式化字符串中的特定字串...2、漏洞成因 printf函数执行时,首先进行格式化字符串的解析–从栈(或者寄存器)获取参数并与符号说明进行匹配,然后将匹配的结果输出到屏幕上,那么 ,如果格式化字符串中的符号声明与栈上参数不能正确匹配...而本书,printf也就是一个有力的攻击武器,我们可以通过控制字符串的值来实现更多的泄露或者完成个高级的利用。...3、实例代码 gcc编译之后用gdb打开 我们可以看到红框内edx是“My name is %s”,这个时候注意我们的代码,printf后面是没有跟参的,本该压参的位置没有参数,导致了压入的是“

    12110

    实战 | BypassD盾之SQL注入绕过总结

    =1-1 位置② 可以利用其它控制字符替换空格:%01~%0F、%11~%1F 可以利用注释符号:/**/、—+a%0d%0a 可以利用加号+替换空格:union+select 位置③ 可以利用其它控制字符替换空格...(注:其中-、~、.号必须是select查询的第一个字段的数据类型为数字型才能使用) 可以利用小括号()替换空格:select(1),2,db_name() 位置④ 可以利用其它控制字符替换空格:%01...~%0F、%11~%1F 可以利用注释符号:/**/、—+a%0d%0a 可利用其他字符:%80~%FF(需要IIS服务器支持) 位置⑤ 可以利用其它控制字符替换空格:%01~%0F、%11~%1F 可以利用注释符号...规则缺陷/特性:%00时会被认为读取已结束 url中%00表示ascll码中的0 ,而ascii中0作为特殊字符保留。...这里并没有将>进行解码,而是将&符进行编码 我们可以利用这个特性,使用这串字符去绕过某些多个关键字匹配的规则,如:union…select、order…by、/*…*/、'…' 等 绕过 and

    4.9K30

    从零掌握正则表达式

    前言 无论你是出于什么原因需要掌握正则表达式(诸如爬虫、文本检索、后端服务开发或Linux脚本),如果之前从没接触过正则表达式(比如我)很容易如山般的公式中迷失,以至于你项目写的正则表达式很可能会因为组织混乱而被后来的开发者吐槽...image.png 从通配符讲到正则表达式 操作系统上或者SQL中我们经常接触到通配符的使用,比如模糊搜索文件(比如*.dat表示匹配所有以.dat为后缀的文件)。常用的通配符包括: ?...\cx:匹配由x指明的控制字符,例如\cM匹配一个Control-M或者回车符,x的值必须为A-Z或a-z之一 \f:匹配一个换页符 \n:匹配一个换行符 \r:匹配一个回车符 \s:匹配任何空白字符...就可以实现非贪婪或者最小匹配。 4. 定位符 ^:匹配输入字符串开始的位置 $:匹配输入字符串结尾的位置 \b:匹配一个单词边界,即字与空格间的位置 \B:非单词办结匹配 5....[^a-z]:匹配任何不在指定范围内的任意字符 \b:匹配一个单词边界,即单词和空格间的位置 \B:匹配非单词边界 \cx:匹配由x指明的控制字符 \d:匹配一个数字字符 \D:匹配一个非数字字符

    87220

    Bash:选择结构之case

    没错,casebash中的地位,和switchC中的地位一样。但是用法可大有不同。 代码块 任何语言都有代码块的概念,C语言中的花括号{ },python中的冒号和缩进。...中,case后面如果不加break,那么执行完匹配的语句后,将接着执行,而不管下面的条件匹配匹配,直到遇到break为止。...难道末尾加一个分号?错错错。答案是一个分号加一个扭号。 #!...注意我上面用到了 ;;& 也就是说匹配了一个模式之后,不会停止,还会继续向下执行。执行效果: ? 枚举字符串 一般的写法比如(123|456|789)匹配123,456,789这三个数。...当然了有些字符(比如控制字符)貌似不好输入。这样不好测试[:cntrl:]这个字符类,这里我告诉您一下,ascii码中27对应的控制字符就是ESC。测试脚本的时候,可以按一下ESC键。

    92510
    领券