ShoneSharp语言(S#)的设计和使用介绍

系列(6)— 字符串String

作者:Shone

声明:原创文章欢迎转载,但请注明出处,https://www.cnblogs.com/ShoneSharp。

摘要: S#语言的最全能类型——字符串(对应C#的String),可用于表示文本内容,如"S#公式是很有特色"等。S#的字符串输入格式有三种:"xxxxx",@"xxxxx"和'xxxxx'。在S#语言设计时字符串的地位是很高的,系统把它也看成是“程序即数据、数据即程序”的全能表达方式之一。

软件: S#语言编辑解析运行器(ShoneSharp.13.6.exe),运行环境.NET4.0,单EXE直接运行,绿色软件无副作用。网盘链接https://pan.baidu.com/s/1nv1hmJn

前面介绍数值Double类型,把该类型的所有成员罗列出来感觉很罗嗦,但是没办法,最基本的三个类型(Double, String, Bool)必须列全面,因为他们是构成S#的原始素材。后面介绍其他类型时将择重点省略介绍。

一、三种输入格式

今天详细解释一下S#语言的最全能类型——字符串(对应C#的double),可用于表示文本内容,如"S#公式是很有特色"等。与C#一样,字符串是不可修改的内存数据,对它进行运算只能生成新字符串。

S#的字符串输入格式有三种:

(1)双引号开始,双引号结束,中间支持用\进行字符转义。(与C#相同)

"xxxxx"

(2)双引号开始,双引号结束,中间两个"转义为单个"。(与C#相同)

@"xxxxx"

(3)单引号开始,单引号结束,中间两个'转义为单个",是语言推荐的最简单的输入格式。(与JavaScript相同)

'xxxxx'

S#语言也没有C#中的字符Byte类型,可以用单个字符的字符串替代。

二、全能字符串

在S#语言设计时字符串的地位是很高的,系统把它也看成是“程序即数据、数据即程序”的全能表达方式之一。

比如'20'间接表达了数值,'(20+30)/2'间接表达了数值计算,这都可以看成数据。

在字符串前面使用?,就可以对字符串求值,?'(20+30)/2'计算结果为25。那么这时不就变成程序了吗?!

再看一个带变量的例子如下:

{ 

  a = 20  , 

  b = 30  ,   

  c = "(a+b)/2"  ,   

  d = ?c

}

计算结果为 { a = 20, b = 30 , c = '(a+b)/2' , d = 25}。

如果把字符串看成一条很长很长的数据纸带,把?符号看成一个程序读写头,那么无限执行下去是不是就是“图灵机”原型!!!

总之在S#中请善用字符串,它可以提升数据及程序表达能力。

三、字符串函数

Bool exists(String file)

说明:返回指定文件内容字符串

输入:exists('d:\hjx.txt')

求值:False

String format(String s,Object arg,...)

说明:返回格式化字符串,其中格式项与.NET相同

输入:format('hello {0}:{1}',10,'hjx')

求值:'hello 10:hjx'

String read(String file)

说明:返回指定文件内容字符串

输入:read('d:\hjx.txt')

四、字符串属性

Double String.CharLen

说明:字符长度值(其中汉字为1,英文0.5,忽略换行)

输入:x.CharLen

Double[] String.Chars

说明:字符值数组

输入:x.Chars

String[] String.CommarWords

说明:获取文本的逗号分隔符串数组

输入:x.CommarWords

Double String.Count

说明:字符计数值

输入:x.Count

Double String.EndChar

说明:结束字符数值

输入:x.EndChar

String String.Identifier

说明:规范名称标识符

输入:x.Identifier

Bool String.IsIdentifier

说明:是否规范名称标识符

输入:x.IsIdentifier

String[] String.Lines

说明:获取文本的行字符串数组

输入:x.Lines

String String.Lower

说明:小写字符串

输入:x.Lower

String String.PrefixLower

说明:首字母小写

输入:x.PrefixLower

String String.PrefixUpper

说明:首字母大写

输入:x.PrefixUpper

String String.Reverse

说明:倒转字符串

输入:x.Reverse

String[] String.SemicolonWords

说明:获取文本的分号分隔符串数组

输入:x.SemicolonWords

String[] String.SpaceWords

说明:获取文本的空格分隔字符串数组

输入:x.SpaceWords

Double String.StartChar

说明:开始字符数值

输入:x.StartChar

String String.Trim

说明:头尾去空白字符串

输入:x.Trim

String String.TrimEnd

说明:尾部去空白字符串

输入:x.TrimEnd

String[] String.TrimLines

说明:获取文本的行字符串数组

输入:x.TrimLines

String String.TrimStart

说明:头部去空白字符串

输入:x.TrimStart

String String.Upper

说明:大写字符串

输入:x.Upper

String[] String.Words

说明:获取文本的回车或空格分隔字符串数组

输入:x.Words

五、字符串方法

Bool String.Contains(String value)

说明:判断是否包含指定串

输入:x.Contains('hjx')

String String.Del(Double i)

说明:返回删除字符串,从位置i开始删除所有字符

输入:x.Del(5)

String String.Del(Double i, Double d)

说明:返回删除字符串,从位置i开始删除d个字符

输入:x.Del(5,2)

Bool String.Ends(String value)

说明:判断是否以指定串结尾

输入:x.Ends('hjx')

String[] String.Grow(Double n)

说明:字符串自增序列数组

输入:x.Grow(5)

String String.Identifier(String prefix)

说明:带前缀的规范名称标识符

输入:x.Identifier('my')

Double String.IndexOf(String sub)

说明:返回匹配子串sub的第一个索引

输入:x.IndexOf('hjx')

Double String.IndexOf(String sub, Double i)

说明:返回匹配子串sub的第一个索引,从位置i开始检查

输入:x.IndexOf('hjx',0)

Double String.IndexOf(String sub, Double i, Double d)

说明:返回匹配子串sub的第一个索引,从位置i开始并检查d个字符

输入:x.IndexOf('hjx',0,5)

Double String.IndexOfAny(String sub)

说明:返回匹配sub中任意字符的第一个索引

输入:x.IndexOfAny('hjx')

Double String.IndexOfAny(String sub, Double i)

说明:返回匹配sub中任意字符的第一个索引,从位置i开始检查

输入:x.IndexOfAny('hjx',0)

Double String.IndexOfAny(String sub, Double i, Double d)

说明:返回匹配sub中任意字符的第一个索引,从位置i开始并检查d个字符

输入:x.IndexOfAny('hjx',0,5)

String String.Insert(Double i, String sub)

说明:返回插入字符串,在位置i处插入子串sub

输入:x.Insert(5,'hjx')

Double String.LastIndexOf(String sub)

说明:返回反向匹配子串sub的第一个索引

输入:x.LastIndexOf('hjx')

Double String.LastIndexOf(String sub, Double i)

说明:返回反向匹配子串sub的第一个索引,从位置i反向开始检查

输入:x.LastIndexOf('hjx',5)

Double String.LastIndexOf(String sub, Double i, Double d)

说明:返回反向匹配子串sub的第一个索引,从位置i反向开始并检查d个字符

输入:x.LastIndexOf('hjx',5,5)

Double String.LastIndexOfAny(String sub)

说明:返回反向匹配sub中任意字符的第一个索引

输入:x.LastIndexOfAny('hjx')

Double String.LastIndexOfAny(String sub, Double i)

说明:返回反向匹配sub中任意字符的第一个索引,从位置i反向开始检查

输入:x.LastIndexOfAny('hjx',5)

Double String.LastIndexOfAny(String sub, Double i, Double d)

说明:返回反向匹配sub中任意字符的第一个索引,从位置i反向开始并检查d个字符

输入:x.LastIndexOfAny('hjx',5,5)

String String.Pad(Double d)

说明:返回填充空格对齐后字符串,d正/负对应右/左对齐

输入:x.Pad(20)

String String.Pad(Double d, Double ch)

说明:返回填充字符对齐后字符串,d正/负对应右/左对齐

输入:x.Pad(20,42)

String String.Remove(String sub)

说明:返回删除指定串后字符串

输入:x.Remove('hjx')

String String.Replace(String old, String rep)

说明:返回替换指定串后字符串

输入:x.Replace('hjx','HJX')

String[] String.Split(String g)

说明:返回用g中任意字符分隔后的字符串数组

输入:x.Split(',')

Bool String.Starts(String value)

说明:判断是否以指定串开头

输入:x.Starts('hjx')

String String.Sub(Double i)

说明:返回提取字符串,从位置i开始提取所有字符

输入:x.Sub(5)

String String.Sub(Double i, Double d)

说明:返回提取字符串,从位置i开始提取d个字符

输入:x.Sub(5,2)

同样其实还有些适用于数值类型的算符、函数、属性以及方法,也没有在本节列出而是放在其基类型——任意对象(对应C#的object)中介绍,因为不但支持字符串,还支持包含字符串的数组、列表和数据表的计算。

声明:原创文章欢迎转载,但请注明出处,https://www.cnblogs.com/ShoneSharp。

软件: S#语言编辑解析运行器(ShoneSharp.13.6.exe),运行环境.NET4.0,单EXE直接运行,绿色软件无副作用。网盘链接https://pan.baidu.com/s/1nv1hmJn

标签:

ShoneSharp语言(S#)的设计和使用介绍系列(6)— 字符串String的更多相关文章

  1. ShoneSharp语言(S#)的设计和使用介绍系列(1)— 开篇

    ShoneSharp语言(S#)的设计和使用介绍 系列(1)- 开篇 作者:Shone 声明:原创文章欢迎转载,但请注明出处,https://www.cnblogs.com/ShoneSharp. 一 ...

  2. ShoneSharp语言(S#)的设计和使用介绍系列(4)— 入门概述

    ShoneSharp语言(S#)的设计和使用介绍 系列(4)- 入门概述 作者:Shone 声明:原创文章欢迎转载,但请注明出处,https://www.cnblogs.com/ShoneSharp. ...

  3. ShoneSharp语言(S#)的设计和使用介绍系列(3)— 修炼工具

    ShoneSharp语言(S#)的设计和使用介绍 系列(3)- 修炼工具 作者:Shone 声明:原创文章欢迎转载,但请注明出处,https://www.cnblogs.com/ShoneSharp. ...

  4. ShoneSharp语言(S#)的设计和使用介绍系列(2)— 掀开盖头

    ShoneSharp语言(S#)的设计和使用介绍 系列(2)- 掀开盖头 作者:Shone 声明:原创文章欢迎转载,但请注明出处,https://www.cnblogs.com/ShoneSharp. ...

  5. ShoneSharp语言(S#)的设计和使用介绍系列(11)—“类”披炫服靓妆化成“表”

    ShoneSharp语言(S#)的设计和使用介绍 系列(11)—“类”披炫服靓妆化成“表” 作者:Shone 声明:原创文章欢迎转载,但请注明出处,https://www.cnblogs.com/Sh ...

  6. ShoneSharp语言(S#)的设计和使用介绍系列(10)— 富家子弟“语句“不炫富

    ShoneSharp语言(S#)的设计和使用介绍 系列(10)— 富家子弟“语句“不炫富 作者:Shone 声明:原创文章欢迎转载,但请注明出处,https://www.cnblogs.com/Sho ...

  7. ShoneSharp语言(S#)的设计和使用介绍系列(9)— 一等公民“函数“爱炫巧

    ShoneSharp语言(S#)的设计和使用介绍 系列(9)— 一等公民“函数“爱炫巧 作者:Shone 声明:原创文章欢迎转载,但请注明出处,https://www.cnblogs.com/Shon ...

  8. ShoneSharp语言(S#)的设计和使用介绍系列(8)— 最炫“公式”风

    ShoneSharp语言(S#)的设计和使用介绍 系列(8)— 最炫“公式”风 作者:Shone 声明:原创文章欢迎转载,但请注明出处,https://www.cnblogs.com/ShoneSha ...

  9. ShoneSharp语言(S#)的设计和使用介绍系列(7)— 布尔Bool及对象Object

    ShoneSharp语言(S#)的设计和使用介绍 系列(7)— 布尔Bool及对象Object 作者:Shone 声明:原创文章欢迎转载,但请注明出处,https://www.cnblogs.com/ ...

随机推荐

  1. 【深入AQS原理】我画了35张图就是为了让你深入 AQS

    申明 本文首发自公众号:程序员cxuan,此文章为本人投稿文章.已经和cxuan沟通,文章投递公众号,博客平台我自己发布可标记为原创. 此文章肝了很久,图片较多,希望大家喜欢. 另外,感兴趣的小伙伴可 ...

  2. Vue 2.x折腾记 - (17) 基于Ant Design Vue 封装一个配置式的表单组件

    前言 写了个类似上篇搜索的封装,但是要考虑的东西更多. 具体业务比展示的代码要复杂,篇幅太长就不引入了. 效果图 2019-04-25 添加了下拉多选的渲染,并搜索默认过滤文本而非值 简化了渲染的子组 ...

  3. Golang项目部署

    文章来源:https://goframe.org/deploymen... 一.独立部署 使用GF开发的应用程序可以独立地部署到服务器上,设置为后台守护进程运行即可.这种模式常用在简单的API服务项目 ...

  4. Joomla CMS 3.2-3.4.4 SQL注入 漏洞分析

    RickGray · 2015/10/26 11:24 昨日,Joomla CMS发布新版本3.4.5,该版本修复了一个高危的SQL注入漏洞,3.2至3.4.4版本都受到影响.攻击者通过该漏洞可以直接 ...

  5. python(运算符)

    一.运算符 1.算数运算符 (1)加(+) 注意:字符串与整数之间不能进行相加,需要通过str()或int()进行转换数据类型 整数与整数相加 >>> 1 + 1 2 >> ...

  6. 【Elasticsearch学习】之基础概念

    Elasticsearch是一个近实时的分布式搜索引起,其底层基于开源全文搜索库Lucene:Elasticsearch对Lucene进行分装,对外提供REST API 的操作接口.基于 ES,可以快 ...

  7. Java笔记(day13)

    多线程: 进程:正在进行中的程序(直译) 线程:执行路径,就是进程中负责程序执行的控制单元(执行路径): 一个进程中可以多个路径,称为多线程 一个进程至少一个线程 每一个线程都有自己运行的内容,这个内 ...

  8. jQuery如何使用键盘事件,按住空格键完成进度条效果,并终止键盘事件

    jQuery使用键盘事件 keyup:键盘抬起时 keydown:键盘按下时 keypress:键盘按住时 运行下列代码,可以看效果 $(document).keyup(function () { c ...

  9. 036_python的大文件下载以及进度条展示

    复习 1.黏包现象 粘包现象的成因: tcp协议的特点,面向流的,为了保证可靠传输,所以有很多优化的机制. 无边界 所有在连接建立的基础上传递的数据之间没有界限. 收发消息很有可能不完全相等. 缓存机 ...

  10. Openwrt:逆向永久修改Flash中的Mac地址

    get mtd device cat /proc/mtd dev: size erasesize name mtd0: 00800000 00010000 "ALL" mtd1: ...