字符串表达式String Expressions

声明:原创作品,转载时请注明文章来自SAP师太技术博客:www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将追究法律责任!原文链接:http://www.cnblogs.com/jiangzhengjun/p/4292946.html

字符串表达式String Expressions. 69

字符串模板String Templates. 69

literal_text. 71

embedded_expressions. 71

Embedded Expressions - Predefined Formats. 72

format_options. 73

SIGN.. 73

EXPONENT. 74

DECIMALS. 74

ZERO.. 75

STYLE. 75

CURRENCY. 76

NUMBER. 76

DATE. 77

TIME. 77

TIMESTAMP. 77

TIMEZONE. 78

control_characters. 78

字符串操作式Character String Operator

字符串表达式String Expressions

字符串表达式可以是字符串模板,或者是字符串操作式:

{ |string_template| } | { operand1 && operand2 [&&operand3 ... ]}

注:上面语句中的 { } 不是表达式中的一部分

字符串模板String Templates

|[literal_text][embedded_expressions][control_characters]|

注:上面语句中的 [ ] 不是表达式中的一部分,只是说明可省略,但开头与末尾的 | 是表达式中的一部分。

上面表达经过等效代入后如下:

|[c...c][ { expr [format_options] }][\n ...]|

注:上面语句中的c...c表式字面常量文本串;语句中的 { } 为表达式中的一部分;[ ] 不是表达式中的一部分,只是说明可省略;开头与末尾的 | 是表达式中的一部分。

可以使用&&&将多个字符模板串链接起来,由于它们是在运行时才连接,而不是在编译连接的,所以可以突破255个字符的限制,下面两个是等效的:

|...| &  |...|

|...| && |...|

如果内容只有字面常量文本(没有变量表达式或控制字符\r \n \t),则还可以这样(如果包含了这些控制字符时,会原样输出,所以有这些控制字符时,请使用 |...|将字符包起来):

`...` && `...`

但是上面3个与下面3个是不一样的:

`...` &  `...`

‘...‘ &  ‘...‘

‘...‘ && ‘...‘

上面前面头两个还是会受255个字符长度限制,最后一个虽然不受255限制,但尾部空格会被忽略

在ABAP编辑器里,每行代码的最长字符个数不能超过255,所以如果有一个字面常量文本的个数大于255(实质上只能为253个,因为字面常量文本需要使用||、``、‘‘包起来,需占用两个字符)时,可以使用使用|...| &|...|、|...| && |...|、`...` && `...`来将超长的串分成多个小的串再连接,但不能使用`...` & `...`、‘...‘ & ‘...‘ 连接方式分成多个小串再连接,因为后两个是在编译时连接,所以还是不能大于255个,但前面3个却是在运行时连接,可以突破255的限制。

DATA: txt1(256),"虽然字面常量文本受255限制,但定义时没有这样的限制
      str2 TYPE string.
Data: str TYPE string,
      len TYPE i.

"252个字符,最末末尾还有一个空格,共253个字符
txt1 =
`123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012 `
.
"252个字符,最末末尾还有一个空格,共253个字符
str2 =
`123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012 `
.

"在连接时,如果变量的类型为C,则尾部空格会被去掉,如果变量的类型为String,尾部空格不会被去掉
"所以这里txt1尾部空格会被去掉,但str2变量的尾部空格在连接时会保留,这与 CONCATENATE 是一样的
str = |{ txt1 }| & |{ str2 }|.
len = strlen( str ).
WRITE: / len."504

"但如果直接将字面常量串写在表达试里时,不会去掉尾部空格。而且连接起来的字面常量串不受255限制
str =
|123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012 |
&
|123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012 |
.
len = strlen( str ).
WRITE: / len."506

"下面每个字面常量都是140个,但&连接符在将多个使用``引起来的串连起来时,个数还是不能大于255,所以下面编译不能通过
"str =
"`12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890`
" &
"`12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890`.

"虽然上面编译不能通过,但改为 && 连接时,是可以不受255限制的(使用``、‘‘引起来的串中的控制字符会原样输出
str =
`12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890\r\n `
&&"并且使用‘‘引起来的字符串在连接时尾部空格会被去掉,但 `` 引起来的不会去除
‘12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 ‘.
len = strlen( str ).
WRITE: / len."285

"使用||包起来的字面常量文本中的控制字符会起作用(但在屏幕上打印时会输出 # ,这恰好说明控制字符生效了)
str =
|12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890\r\n |
&&
|12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 |.
len = strlen( str ).
WRITE: / len."284

literal_text

为字符串表达式中的字面常量文本(literal text)部分,不能使用 { } 括起来,不能含有控制字符(如 \r \n \t这些控制字符),特殊字符|{ } \需要使用进行转义。

DATA txt TYPE string.
txt = |Characters \|, \{, and \} have to be escaped by \\ in literal text.|.
WRITE: txt.

Characters |, {, and } have to be escaped by \ in literal text.

embedded_expressions

expr[format_options] }

上面的 { } 为内嵌表达式的一部分

expr可以为下面这些:

l  变量名

l  计算表达式(算术计算表达式、字符串表达式、位表达式)

l  内置函数

l  方法调用

DATA:p1  TYPE x LENGTH 1 VALUE ‘5B‘, "01011011
     p2  TYPE x LENGTH 1 VALUE ‘13‘. "00010011

DATA: str TYPE string.
str = |{ ( 1 + 1 ) * 2 }|."算术计算表达式
WRITE:/ str."4
str = |{ |aa| && ‘bb‘ }|."字符串表达式
WRITE:/ str."aabb
str = |{ p1 BIT-AND p2 }|."位表达式
WRITE:/ str."13 "X类型转换为字符串类型

str = |{ str }|."变量名
WRITE: / str."13

str = |{ strlen( str ) }|."内置函数
WRITE: / str."2

方法调用:

CLASS demo DEFINITION.
  PUBLIC SECTION.
    CLASS-METHODS: main,
                   method RETURNING value(p) TYPE string.
  PRIVATE SECTION.
    CLASS-DATA attr TYPE string VALUE `Hello`.
ENDCLASS.                    "demo DEFINITION

CLASS demo IMPLEMENTATION.
  METHOD main.
    DATA txt TYPE string.
    txt = |{ attr }{ method( ) "方法
                     WIDTH = 6 ALIGN = RIGHT }{ attr }|.
   WRITE: txt.
  ENDMETHOD.
  METHOD method.
    p = `world`.
    attr = ‘!‘.
  ENDMETHOD.
ENDCLASS.

START-OF-SELECTION.
  demo=>main( ).

Hello world!

注:字符串表达式中的方法调用是在整个表达式分析完毕之后才调用的。如果某个方法调用时修改了某个变量的值,并且这个变量又为字符串表达式中的操作数,则修改只会影响方法调用右边的变量值,比如这里的attr,在方法 method 调用前(左)不会发生改变,只是最末(右)被修改了

Embedded Expressions - Predefined Formats

如果没有明确的使用format_options格式选项,则expr会使用默认的内嵌表达式预置格式(Embedded Expressions - Predefined Formats)来格式化,默认格式如下:

Text length(文本长度):默认会使用最小且能输出整个expr的长度,比如I类型的变量不会使用千分位符号

DATA: i TYPE i VALUE 123456789,
      str TYPE string.
str = |{ i }|.
WRITE:/ str, i."123456789 123456.789

Alignment(对齐方式):默认所有类型的expr都是左对齐

expr如果为c, d, n, and t固定长度的字符类型,则尾部的空格会被去掉;如果是string类型,则会保留

expr如果是x and xstring类型,则会以十六进制格式会,即每个字节会以二个十六进制的字符来表示

expr如果是数字类型,则负号(是负数时)放在数据的左边,正数默认没有符号。小数点通常使用(.)来表示,另外不会有千分位分隔符

format_options

如是使用了format_options后,会覆盖默认的的内嵌表达式预置格式(Embedded Expressions - Predefined Formats)。

[WIDTH = len] "输入宽度,不能小于最小输出宽度(即默认预置最小宽度)否则会忽略。如果太宽,则会在右边补空格(至于是在右边还是左,以及补什么,可以由 ALIGN and PAD选项来指定)
[ALIGN = LEFT|RIGHT|CENTER|(val)] "仅在WIDTH指定的宽度大于了默认预置的最小输出宽度时有效。不足的地方(左边、右边、或者是左右两边)补空格(默认,可以使用 PAD选项来修改)
[PAD  = c] "不足时使时用来填充,默认使用空格
[CASE = RAW|UPPER|LOWER|(val)] "大小写转换,默认为RAW.且对上面  PAD 字符不起作用
[SIGN= LEFT|LEFTPLUS|LEFTSPACE|RIGHT|RIGHTPLUS|RIGHTSPACE|(val)]"+/-输出的位置,以及+是否输出,以及+不输出时是否使用空格代替 
[EXPONENT= exp]"浮点数f的指数位数,只能用在f类型或者是 STYLE 值为 scientific 时,且不能与 TIMEZONE 选项一起使用
[DECIMALS = dec] "精确到小数点后几位,如果本身的小数位超过了dec,则四舍五入,不足时补0直到dec位小数。适用所有数字类型。且不能与 TIMEZONE 选项一起使用
[ZERO = YES|NO|(val)] "只用于numeric data type(如I、P、F)类型。如果表达式为0,则输出还是不输出前导空格(使用空格代替)。且不能与 TIMEZONE 选项一起使用,默认为YES。(val)中的val指值为YES或者是NO的变量,如CL_ABAP_FORMAT=>Z_YES、CL_ABAP_FORMAT=>Z_NO
[STYLE =  SIMPLE|SIGN_AS_POSTFIX|SCALE_PRESERVING|SCIENTIFIC|SCIENTIFIC_WITH_LEADING_ZERO|SCALE_PRESERVING_SCIENTIFIC|ENGINEERING|(val)] "将数字格式化成科学计数法的格式,每一种样式请参数后面的实例,不能与 CURRENCY, SIGN, or TIMEZONE 一起使用。默认为SIMPLE 
[CURRENCY = cur] " 指定货币代码,决定货币小数位数。货币代码在 TCURC 表中(数据库字段TCURC-WAERS存储了货币代码,一般货币都是精确到小数点后两位,除非这些货币代码在 TCURX-CURRKEY出现,则此时的货币的小数位以TCURX-CURRDEC为准)。 只能是i, p, or f类型的数字,且不能与 STYLE or TIMEZONE 一起使用
[NUMBER = RAW|USER|ENVIRONMENT|(val)] "指定了数字的小数点与千分位分隔符的符号,不能与TIMEZONE一起使用。默认为RAW
[DATE = RAW|ISO|USER|ENVIRONMENT|(val)] "日期格式化,只适用于d类型。默认为RAW。
[TIME = RAW|ISO|USER|ENVIRONMENT|(val)] "时间格式化,只适用于t类型。默认为RAW。
[TIMESTAMP = SPACE|ISO|USER|ENVIRONMENT|(val)] "用来格式化time stamp(date/time)。只适用于 p(8.0)(即词典中的TIMESTAMP类型)或p(11.7)(即词典中的TIMESTAMPL 类型)。
[TIMEZONE = tz] "只适用于TIMESTAMP、TIMESTAMPL 类型。时区值可以从ttzz-tzone中取得。将 time stamp转换为指定的地时区里的日期与时间(to the local date and the local time of the specified time zone)
[COUNTRY = cty] ... . "对 NUMBER, DATE, TIME, and TIMESTAMP选项的格式有影响,可从 T005X-LAND 取值

SIGN

DATA: i1 TYPE i VALUE  -1000,
      i2 TYPE i VALUE 1000,
      str TYPE string.

str = |{ i1 SIGN = LEFT }|.
WRITE:/ str.
str = |{ i2 SIGN = LEFT }|.
WRITE:/ str.
str = |{ i1 SIGN = LEFTPLUS }|.
WRITE:/ str.
str = |{ i2 SIGN = LEFTPLUS }|.
WRITE:/ str.
str = |{ i1 SIGN = LEFTSPACE }|.
WRITE:/ str.
str = |{ i2 SIGN = LEFTSPACE }|.
WRITE:/ str.
str = |{ i1 SIGN = RIGHT }|.
WRITE:/ str.
str = |{ i2 SIGN = RIGHT }|.
WRITE:/ str.
str = |{ i1 SIGN = RIGHTPLUS }|.
WRITE:/ str.
str = |{ i2 SIGN = RIGHTPLUS }|.
WRITE:/ str.
str = |{ i1 SIGN = RIGHTSPACE }|.
WRITE:/ str.
str = |{ i2 SIGN = RIGHTSPACE }|.
WRITE:/ str.

-1000

1000

-1000

+1000

-1000

1000

1000-

1000

1000-

1000+

1000-

1000

EXPONENT

DATA: f TYPE f VALUE ‘123.456‘,
      str TYPE string.
WRITE:/ f.
str = |{ f EXPONENT = 3 }|.
WRITE:/ str.

1,2345600000000000E+02

0.123456E+03

DECIMALS

DATA: i TYPE i VALUE 123456,
      f TYPE f VALUE ‘123.456‘,
      str TYPE string.
WRITE:/ i,f.
str = |{ i DECIMALS = 2 }|.
WRITE:/ str.
str = |{ f DECIMALS = 2 }|.
WRITE:/ str.

123.456    1,2345600000000000E+02

123456.00

123.46

ZERO

DATA: i TYPE i VALUE 0,
      str TYPE string.
WRITE:/ i.
str = |{ i ZERO = YES }|.
WRITE:/ str.
str = |{ i ZERO = NO }|.
WRITE:/ str.

0

0

STYLE

DATA: i TYPE i VALUE -123456,
      f TYPE f VALUE ‘-123.456‘,
      str TYPE string.
WRITE:/ i,f.
str = |{ i STYLE = SIMPLE }|.
WRITE:/ str.
str = |{ f STYLE = SIMPLE }|.
WRITE:/ str.
str = |{ i STYLE = SIGN_AS_POSTFIX }|.
WRITE:/ str.
str = |{ f STYLE = SIGN_AS_POSTFIX }|.
WRITE:/ str.
str = |{ i STYLE = SCALE_PRESERVING }|.
WRITE:/ str.
str = |{ f STYLE = SCALE_PRESERVING }|.
WRITE:/ str.
str = |{ i STYLE = SCIENTIFIC }|.
WRITE:/ str.
str = |{ f STYLE = SCIENTIFIC }|.
WRITE:/ str.
str = |{ i STYLE = SCIENTIFIC_WITH_LEADING_ZERO }|.
WRITE:/ str.
str = |{ f STYLE = SCIENTIFIC_WITH_LEADING_ZERO }|.
WRITE:/ str.
str = |{ i STYLE = SCALE_PRESERVING_SCIENTIFIC }|.
WRITE:/ str.
str = |{ f STYLE = SCALE_PRESERVING_SCIENTIFIC }|.
WRITE:/ str.
str = |{ i STYLE = ENGINEERING }|.
WRITE:/ str.
str = |{ f STYLE = ENGINEERING }|.
WRITE:/ str.

123.456-  -1,2345600000000000E+02

-123456

-123.456

123456-

123.456-

-123456

-123.456

-1.23456E+05

-1.23456E+02

-0.123456E+06

-0.123456E+03

-1.23456E+0005

-1.23456E+0002

-123.456E+03

-123.456E+00

CURRENCY

DATA: i TYPE i VALUE 123456,
      f TYPE f VALUE ‘123.456‘,
      str TYPE string.
WRITE:/ i,f.
str = |{ i CURRENCY = ‘CNY‘ }|."人民币
WRITE:/ str.
str = |{ f CURRENCY = ‘CNY‘ }|.
WRITE:/ str.
str = |{ i CURRENCY = ‘GBP‘ }|."英磅
WRITE:/ str.
str = |{ f CURRENCY = ‘GBP‘ }|.
WRITE:/ str.
str = |{ i CURRENCY = ‘IGPM‘ }|."美元
WRITE:/ str.
str = |{ f CURRENCY = ‘IGPM‘ }|.
WRITE:/ str.
str = |{ i CURRENCY = ‘JPY‘ }|."日元
WRITE:/ str.
str = |{ f CURRENCY = ‘JPY‘ }|.
WRITE:/ str.

123.456    1,2345600000000000E+02

1234.56

123.46

1234.56

123.46

1234.56

123.46

123456

123

NUMBER

DATA: f TYPE f VALUE ‘12345678.9‘,
      str TYPE string.
WRITE:/ f.
str = |{ f NUMBER = RAW }|."小位点为 .,且没有千分位分隔符
WRITE:/ str.
str = |{ f NUMBER = USER }|."根据用户主数据( user master record)设置来确定
WRITE:/ str.
str = |{ f NUMBER = ENVIRONMENT }|."根据环境设置来确定。如果没有使用 SET COUNTRY 来设置 language environment,则与USER一样
WRITE:/ str.
SET COUNTRY ‘US‘.
str = |{ f NUMBER = ENVIRONMENT }|.
WRITE:/ str.

1,2345678900000000E+07

12345678.9

12345678,9

12345678,9

12345678.9

DATE

DATA: d TYPE d VALUE ‘20130905‘,
      str TYPE string.
WRITE:/ d.
str = |{ d DATE = RAW }|."不会带有任何格式
WRITE:/ str.
str = |{ d DATE = ISO }|."使用yyyy-mm-dd格式化
WRITE:/ str.
str = |{ d DATE = USER }|."根据用户主数据(user master data)的设置来格式化
WRITE:/ str.
str = |{ d DATE = ENVIRONMENT }|."根据当前环境设置来格式化(可通过SET COUNTRY 来设置当前环境的language environment),没设置时,使用USER
WRITE:/ str.
set COUNTRY ‘US‘.
str = |{ d DATE = ENVIRONMENT }|.
WRITE:/ str.

05092013

20130905

2013-09-05

05.09.2013

05.09.2013

09/05/2013

TIME

DATA: t TYPE t VALUE ‘185959‘,
      str TYPE string.
WRITE:/ t.
str = |{ t TIME = RAW }|."不会带有任何格式
WRITE:/ str.
str = |{ t TIME = ISO }|."使用 hh:mm:ss 格式化
WRITE:/ str.
str = |{ t TIME = USER }|."根据用户主数据(user master data)的设置来格式化
WRITE:/ str.
str = |{ t TIME = ENVIRONMENT }|."根据当前环境设置来格式化(可通过SET COUNTRY 来设置当前环境的language environment),没设置时,使用USER
WRITE:/ str.

185959

185959

18:59:59

18:59:59

18:59:59

TIMESTAMP

DATA: t TYPE timestamp VALUE ‘20130905153159‘,"YYYYMMDDhhmmss
      str TYPE string.
WRITE:/ t.
str = |{ t TIMESTAMP = SPACE }|."使用 yyyy-mm-dd hh:mm:ss.zzzzzzz 格式化,并且与time zone相关,可与 TIMEZONE 一起使用
WRITE:/ str.
str = |{ t TIMESTAMP = ISO }|."使用 yyyy-mm-ddThh:mm:ss,zzzzzzz 格式化
WRITE:/ str.
str = |{ t TIMESTAMP = USER }|."根据用户主数据(user master data)的设置来格式化
WRITE:/ str.
str = |{ t TIMESTAMP = ENVIRONMENT }|."根据当前环境设置来格式化(可通过SET COUNTRY 来设置当前环境的language environment),没设置时,使用USER
WRITE:/ str.

20.130.905.153.159

2013-09-05 15:31:59

2013-09-05T15:31:59

05.09.2013 15:31:59

05.09.2013 15:31:59

TIMEZONE

DATA: t TYPE timestamp VALUE ‘20130905153159‘,"YYYYMMDDhhmmss
      tzone TYPE ttzz-tzone,
      str TYPE string.
WRITE:/ t.
str = |{ t TIMESTAMP = SPACE }|.
WRITE:/ str.
tzone = ‘UTC‘.
str = |{ t TIMESTAMP = SPACE TIMEZONE = tzone }|.
WRITE:/ str.
tzone = ‘UTC+8‘.
str = |{ t TIMESTAMP = SPACE TIMEZONE = tzone }|.
WRITE:/ str.

2013-09-05 15:31:59

2013-09-05 15:31:59

2013-09-05 23:31:59

control_characters

只识别下面三个:


Control Character


Meaning


Hexadecimal Value


\n


line break


0A


\r


return


0D


\t


tabulator


09

控制字符会被替换为相应的编码的十六进制

字符串操作式Character String Operator

... operand1 && operand2 ...

operand可以为下面这些:

l  变量名(ata objects)

l  字符串表达式(string expressions)

l  内置函数(predefined functions)

l  方法调用(functional methods)

DATA: text TYPE string VALUE `Hello`,
      i TYPE i VALUE 123.
text  = text && ` ` &&  ‘world ‘ && |!| && i.
WRITE: / text.

Hello world!123

时间: 2024-10-25 15:18:16

字符串表达式String Expressions的相关文章

计算字符串表达式的值

一.题目描述 给你一个字符串,包含+,-,*,/和(),数字为0-9,让计算该表达式的值,例如"1+2*3-(8/4)+6",结果为11,这是前几天面试去哪儿网,二面面试官让手撕的题目.记忆中本科的时候遇到过,当时也没啥思路.其实这个题需要分两步完成,第一步:把字符串表达式的中缀形式转为后缀形式,怎么转有一定的规则.第二步:计算后缀表达式的值. 关于什么是前缀,中缀,后缀表达式,请读者自己查阅资源,这里就不介绍了.我们只谈如何从中缀转为后缀,规则如下: 首先定义一个栈stack用来保存

PHP 实现字符串表达式计算

什么是字符串表达式?即,将我们常见的表达式文本写到了字符串中,如:"$age >= 20",$age 的值是动态的整型变量. 什么是字符串表达式计算?即,我们需要一段程序来执行动态的表达式,如给定一个含表达式的字符串变量并计算其结果,而表达式字符串是动态的,比如为客户A执行的表达式是 $orderCount >= 10,而为客户B执行的表达式是 $orderTotal >= 1000. 场景在哪儿?同一份程序具有完全通用性,但差异就其中一个表达式而已,那么我们需要将其

Shell的字符串表达式介绍-实践及企业案例脚本剖析

man test可以看到字符串  -n STRING               the length of STRING is nonzero        STRING equivalent to -n STRING        -z STRING               the length of STRING is zero        STRING1 = STRING2               the strings are equal        STRING1 != 

本程序找出字符串数组 String[] arr = {“welcome”, “china”, “hi”, “congratulation”, “great”} 中的长度最大的元素,并打印输出。

/** * Homework14 * * @Description:本程序找出字符串数组 String[] arr = {"welcome", "china", "hi", * "congratulation", "great"} 中的长度最大的元素,并打印输出. * StringDemo01 * * @author  * * email: [email protected] 2017年4月18日下午6:3

022给定一个字符串类型(string)表示的小数,打印出它的二进制表示(keep it up)

给定一个字符串类型(string)表示的小数,打印出它的二进制表示. 这个题注意字符串的合法性. 不过下面的代码没有处理那种无限循环的小数, 当出现无限循环小数时,while(other>0)可能永久为true 代码: #include <iostream> #include <string> std::string to_binary_string(const std::string& vNumStr) { std::string::size_type Pos =

JAVA字符串格式化-String.format()的使用(转)

常规类型的格式化 String类的format()方法用于创建格式化的字符串以及连接多个字符串对象.熟悉C语言的同学应该记得C语言的sprintf()方法,两者有类似之处.format()方法有两种重载形式. format(String format, Object... args) 新字符串使用本地语言环境,制定字符串格式和参数生成格式化的新字符串. format(Locale locale, String format, Object... args) 使用指定的语言环境,制定字符串格式和参

栈的应用--计算字符串表达式

计算机的本质工作就是做数学运算,那计算机可以读入字符串"1+2+3+4+5+6+7"并计算值吗? 答案是肯定的. 这里我基本实现了个位数的加减乘除,当然这个算法最简单的解决方式是采用二叉树(后面会实现~),这里作出了栈的实现方式. 首先引入两个概念: 中缀表达式和后缀表达式 1,在生活中我们通常书写1+1的时候都会写成1+1,废话~,这就是中缀表达式,更符合人们的思维习惯与想法. 2,所谓后缀表达式就是将运算符写在操作数的后面,这样更符合计算机的思维. 举例: 5 + 3       

ASP.NET MVC 5 - 创建连接字符串(Connection String)并使用SQL Server LocalDB

原文:ASP.NET MVC 5 - 创建连接字符串(Connection String)并使用SQL Server LocalDB 您创建的MovieDBContext类负责处理连接到数据库,并将Movie对象映射到数据库记录的任务中.你可能会问一个问题,如何指定它将连接到数据库? 实际上,确实没有指定要使用的数据库,Entity Framework将预设值使用的LocalDB. 在本节中,我们将显式地在Web.config文件中,添加应用程序的连接字符串(connection string)

C#数据结构和算法-字符串、String 类和StringBuilder类

*本文为摘抄笔记* Preface当程序需要对String对象进行许多改变时会用到StringBuilder类.因为字符串和String对象都是不可改变的,而StringBuilder对象则是易变的.String类不可变,就意味着每次对象进行改变时都需要创建一个新的对象副本.如果在创建长的字符串,或者是对相同对象进行许多改变,那么就应该用StringBuilder类来代替.StringBuilder对象是可变的,性能会更好. 字符串是字符的序列,可以包含字母.数字和其他符号.C#语言中,用双引号