ShoneSharp語言(S#)的設計和使用介紹系列(6)— 字元串String

来源:http://www.cnblogs.com/ShoneSharp/archive/2017/12/05/ShoneSharp-6.html
-Advertisement-
Play Games

S#語言的最全能類型——字元串(對應C#的String),可用於表示文本內容,如"S#公式是很有特色"等。S#的字元串輸入格式有三種:"xxxxx",@"xxxxx"和'xxxxx'。在S#語言設計時字元串的地位是很高的,系統把它也看成是“程式即數據、數據即程式”的全能表達方式之一。 ...


ShoneSharp語言(S#)的設計和使用介紹

系列(6)— 字元串String

作者:Shone

聲明:原創文章歡迎轉載,但請註明出處,https://www.cnblogs.com/ShoneSharp。

摘要: S#語言的最全能類型——字元串(對應C#的String),可用於表示文本內容,如"S#公式是很有特色"等。S#的字元串輸入格式有三種:"xxxxx",@"xxxxx"和'xxxxx'。在S#語言設計時字元串的地位是很高的,系統把它也看成是“程式即數據、數據即程式”的全能表達方式之一。

軟體: S#語言編輯解析運行器,運行環境.NET 4.0,綠色軟體,單個EXE直接運行,無副作用。網盤下載鏈接為https://pan.baidu.com/s/1dF4e08p

 

前面介紹數值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#語言編輯解析運行器,運行環境.NET 4.0,綠色軟體,單個EXE直接運行,無副作用。網盤下載鏈接為https://pan.baidu.com/s/1dF4e08p

標簽:


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 前言 java8里最大亮點是lambda,讓我們用習慣C# linq的語法,也能眼前一亮。但是比起C#的語法糖還是差的很遠。 差集、並集、交集 ...
  • 定義: 將一個類的介面轉換成客戶希望的另外一個介面。適配器模式使得原本由於介面不相容而不能一起工作的那些類可以一起工作。 角色: 目標(Target)角色:這就是所期待得到的介面,也就是這類的介面是符合我們要求的。 源(Adapee)角色:我們要使用的介面,但是這個介面不符合我們的要求,也就是現在需 ...
  • 參考Spring Cloud官方文檔第13、14、15章 13. Circuit Breaker: Hystrix Clients Netflix提供了一個叫Hystrix的類庫,它實現了斷路器模式。在微服務架構中,通常一個微服務會調用多個其他的微服務。一個相對低層級的服務失敗可能造成上層應用的級聯 ...
  • 2017年11月底開始python的學習。選擇python 3.6。 賬號登陸的粗糙實現。 ...
  • 功能 1.天氣預報 2.區域網對戰 展示 java學習群669823128 部分源碼 package game.weather; import java.util.HashMap; public class Weather { /** * @Fields 今天的天氣數據,整體 */ private ...
  • 在大多數大公司,像應用伺服器軟體的安裝、部署都是運維的事情,其實自己去嘗試部署一下,也是有收穫的。 周末在家無聊,正好嘗試了Linux下的rabbitMq安裝過程,做了記錄,希望有用到的人可以做下參考。 安裝環境: Linux: centOS 7.0 mini版 rabbitMq: 3.6.2 查詢 ...
  • 上一篇《Git命令彙總基礎篇》總結了使用Git的基本命令,這一篇作為補充主要給大家講一些平時使用中的技巧和總結 。 學會了這些命令,已經基本解決了使用Git中大部分問題。 1.gitignore 全局配置忽略文件 git config --global core.excludesfile ~/.gi ...
  • 題目描述 永無鄉包含 n 座島,編號從 1 到 n,每座島都有自己的獨一無二的重要度,按照重要度可 以將這 n 座島排名,名次用 1 到 n 來表示。某些島之間由巨大的橋連接,通過橋可以從一個島 到達另一個島。如果從島 a 出發經過若幹座(含 0 座)橋可以到達島 b,則稱島 a 和島 b 是連 通 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...