单引号有八个功效,后生可畏、注意换行符

图片 1

ORACLE 单引号转义:

Python中的文本是一些内置类型的常量表示方法。

有时我们需要把 ASP 字符串输出为 JS 字符串,比如:

在ORACLE中,单引号有两个作用:

字符串和字节

<script type=”text/javascript”>
var foo = “<%=foo%>”;
</script>

1:字符串是由单引号引用

字符串是一系列的字符序列,Python中用单引号(”),双引号(“”),或者三个单引号(”’
”’)三个双引号(“”” “””)来表示字符串常量。

因为不是直接输出到网页中,而输出到 JS 代码中,所以这就需要注意三点。

2:转义。

#fileName:lexical
str_1 = 'hello python'
str_2 = "What's your name?"
str_3 = '''mile and silence are two powerful tools.
Smile is the way to solve many problems and silence
is the way to avoid many problems'''
str_4 = """It is our choices that show what we truly are,
far more than our abilities. """
print(str_1)
print(str_2)
print(str_3)
print(str_4)

一、注意换行符。ASP 字符串假如有换行符,输出为 JS
字符串时就应该去掉或替换掉换行符,因为在没有连接符的情况下,一个 JS
字符串不允许写成两行。

单引号的使用是就近配对,即就近原则。而在单引号充当转义角色时相对不好理解

利用三引号,你可以表示一个多行的字符串。

二、注意引号。一般情况下,我们的 JS 字符串是用双引号引起来的,如果
ASP 中有一个字符是双引号,输出到客户端后,就会将这个引号解释成 JS
的字符串开始或结束标记符,所以我们在 ASP 输出时应该用 ” 来替换
“。如果我们的 JS 字符串用的是单引号,那么就得替换 ASP 字符串中的单引号。

1.从第二个单引号开始被视为转义符,如果第二个单引号后面还有单引号。

转义符

三、注意反斜杠。正如第二点如说,引号会造成问题,那么反斜杠()也会造成问题,因为反斜杠在
JS
里面是转义字符,作用表示下一个字符是特殊字符、或原义字符、或后向引用、或八进制转义符。比如
ASP 字符串是一个反斜杠,输出为 JS 字符串后变成语句:var foo =
“”;
,由于反斜杠的存在,这时第二个双引号就不表示字符串结束符,这样,这句语句就是错误的,解决办法是将
ASP 的一个反斜杠,替换成两个反斜杠。

SQL select '''' result from dual; RESULT ------ ' 

假设你想要在一个字符串中包含一个单引号(’),那么你该怎么指示这个字符串?例如,这个字符串是what’s
your name?。你肯定不会用’what’s your
name?’来指示它,因为Python会弄不明白这个字符串从何处开始,何处结束。所以,你需要指明单引号而不是字符串的结尾。可以通过 转义符 来完成这个任务。你用’来指示单引号——注意这个反斜杠。现在你可以把字符串表示为’what’s
your name?’。

总结:
<%
dim jsstr
jsstr = str
jsstr = Replace(jsstr, vbcrlf, “”) ‘去掉回车换行符
jsstr = Replace(jsstr, “”””, “”””) ‘替换双引号,如果 JS
字符串是用单引号引的,那么这里就改成替换单引号
jsstr = Replace(jsstr, “”, “\”) ‘替换反斜杠
%>
var foo = “<%=jsstr%>”;

第二个单引号被作为转义符,第三个单引号被转义,可将sql写成这样更好理解:

另一个表示这个特别的字符串的方法是”what’s
your
name?”,即用双引号。类似地,要在双引号字符串中使用双引号本身的时候,也可以借助于转义符。另外,你可以用转义符\来指示反斜杠本身。

select ' '' ' from dual; output:' // 

值得注意的一件事是,在一个字符串中,行末的单独一个反斜杠表示字符串在下一行继续,而不是开始一个新的行。例如:

2.连接符‘||’导致了新一轮的转义:

str_5 = "This is the first sentence.
This is the second sentence."
print(str_5)

连接符号‘||’左右的单引号没有任何的关系,

 

除非‘||’是作为字符串的一部分。

转义序列如下:

SQL select 'name'||'''' result from dual; RESULT ------ name' 
转义序列 意义 注意事项
newline 反斜线且忽略换行  
\ 反斜线()  
单引号(’)  
"  双引号(”)  
a ASCII Bell(BEL)  
b ASCII 退格(BS)  
f ASCII 换页符(FF)  
n ASCII 换行符(LF)  
r ASCII 回车符(CR)  
t ASCII 水平制表符(TAB)  
v ASCII 垂直制表符(VT)  
ooo 八进制值为 ooo 的字符 (1,3)
xhh 十六进制值为 hh 的字符 (2,3)

理解:||后面的作为一个字符串,即前后是’,中间又是一个密集型单引号串”,因此第一个为转义功能.

字符串文本中的转义序列规则如下:

SQL select 'name''''' result from dual; RESULT ------ name'' 
转义序列 意    义 注意事项
N{name} Unicode 数据库中以 name 命名的字符 (4)
uxxxx 16位16进制字符值:xxxx (5)
Uxxxxxxxx 32位16进制字符值:xxxxxxxx (6)

第一个和最后一个单引号作为字符串引用符,中间四个单引号两两转义.

 

//

注意:

oracle中使用双引号:

  1. 与标准 C
    相同的是,最多只可以接受三位八进制数字。
  2. 与标准 C
    不同的是,只能接收两个十六进制数字。
  3. 在字节文本中,十六进制和八进制转义字符表示给定值的字节数。在字符串文本中,这些转义字符表示给定值的
    Unicode 字符。
  4. 与 3.3
    版本不同之处:增加了对别名[ 1 ]的支持。
  5. 可以使用该转义序列为那些构成代理对的单个代码单元编码。只能使用四个十六进制数表示。
  6. 任何 Unicode
    字符都可以采用这样的编码方式。需要注意的是只能使用八个十六进制数表示。

    print(‘123’)
    print(‘x02’)
    print(“N{SOLIDUS}”)
    print(“N{BLACK SPADE SUIT}”)
    print(‘u3333’)
    print(‘U00004e60’)

1)一般来说,字符串中的双引号仅仅被当作一个普通字符进行处理。

结果:

此时,双引号不需要成对出现:

图片 1

SQL select 'hh24"小时""mi""分"""ss"秒"' results from dual; RESULTS ------------------------- hh24"小时""mi""分"""ss"秒" // 

不像标准
C,所有不能被识别的转义序列都保留在串中且不做改变,例如,反斜线会保留在结果中。(这个行为在调试过程中非常有用:如果输入了一个错误的转义序列,在输出结果中更容易识别出错误。)此外,至关重要的是要注意转义字符只能在字符串文本中起作用,在字节文本类别中无法被识别。

2)当出现在to_char的格式字符串中时,双引号有特殊的作用,
就是将非法的格式符包装起来,避免出现ORA-01821: date format not
recognized错误。
也就是说,去掉双引号和其包含的字符后,剩下的应该是一个合法的格式串。

print('k see you later')
#result:k see you later

to_char在处理格式字符串时,会忽略双引号:

 

SQL select to_char(sysdate,'hh24"小时"mi"分"ss"秒"') results from dual; RESULTS -------------- 06小时39分51秒 // 

在三重引用串中,允许出现未转义的新行和引用字符(并被保留),除非三个连续的引用字符串中断了该串。(引用字符是用于引用字符串的字符,如,’ 或
“。)

格式串为’hh24″小时”mi”分”ss”秒”‘;
去掉双引号部分后,剩下的是’hh24miss’,是一个合法的格式串。

 

不过即使真不知道双引号的这个用法,也可以这样来处理,虽然麻烦一点:

str_6 = """this' a dog,what's
you pat?"""
print(str_6)

相关文章

You can leave a response, or trackback from your own site.

Leave a Reply

网站地图xml地图