Show/Hide Toolbars

XSharp

 

X# 中有几种不同的字符串类型。对于普通字符串,不同方言的符号可能不同:

 

字面量

VO, FoxPro & Harbour

Vulcan & Core

'<char>'

String 字面量

Char 字面量*

'<char>...<char>'

String 字面量

Not Supported

"<char>...<char>"

String 字面量

String 字面量

e"<char>...<char>"

扩展的 string 字面量*

扩展的 string 字面量*

i"<char>.. <char>{表达式}"

内插 string 字面量

内插 string 字面量

ei"<char>.. <char>{表达式}" or

ie"<char>.. <char>{表达式}"

扩展的内插 string 字面量*

扩展的内插 string 字面量*

 

 

表中标有星号 (*) 的 <char> 字面量可能包含特殊转义码

 

字符

描述

不以反斜杠开头的字符

正常字符

\\

反斜杠

\"

双引号

\'

单引号

\0

0 字符

\a

警告

\b

退格键(Backspace)

\f

分页

\n

换行

\r

新行

\t

Tab

\v

纵向 tab

\x HEXDIGIT(1-4)

字符的十六进制数。1-4 个十六进制数字

\u HEXGDIGIT (4 or 8)

字符的 Unicode 编码。4 或 8 个十六进制数字

 

插值字符串是一种允许将局部变量、实例变量或其他表达式嵌入字面字符串的功能。X# 支持两种插值字符串:

 

1.        常规插值字符串: i"...."

 

其工作方式与普通 X# 字符串类似,内嵌表达式:

 

 FUNCTION Start AS VOID
    LOCAL Who AS STRING
     Who := "World"
     Console.Writeline( i"Hello {Who}")
     Console.Read()
    RETURN

2.        扩展插值字符串: ie"..." 和 ei"...."

这是插值字符串和扩展字符串的组合。在下面的示例中,\t 将被 tab 字符替换:

 

  FUNCTION Start AS VOID
    LOCAL Who AS STRING
     Who := "World"
     Console.Writeline( ie"Hello\t{Who}")
     Console.Read()
    RETURN

注意:

X# 内的插值字符串可以包含以下形式的表达式

{<interpolationExpression>[,<alignment>][::<formatString>]}

在 C# 中,formatString 的前缀是单冒号。请注意,由于在 X# 中,冒号(:)操作符是实例字段、属性和方法的默认成员访问操作符,因此并不总是可以使用该操作符来分隔表达式和格式字符串。因此,我们将该操作符改为双冒号(::)。如果使用 /allowdot+ 进行编译,也可以使用单冒号作为格式分隔符。

 

要表示字面上的“{”或“}”字符,必须在字符串中复制它们。本例中字符串内的表达式用斜体表示。

FUNCTION Start() AS VOID
  local X := 2 as INT
  local Y := 3 as INT
  var pointMessage := i"The point {{{X}, {Y}}} is {Math.Sqrt(X * X + Y * Y)::F3} from the origin"
  Console.WriteLine(pointMessage)
 // 输出结果:
 // The point {2, 3} is 3.606 from the origin

 

字符串内的表达式元素可以使用格式化符号,就像 String.Format() 符号一样。例如:

 

 FUNCTION Start AS VOID
    LOCAL i AS INT
     i := 42
     Console.Writeline( i"Hello {i:x}")   // i 用十六进制表示,所以输出 Hello 2a
     Console.Read()
    RETURN