这是我的字符串:
var str = "This is my \string";
Run Code Online (Sandbox Code Playgroud)
这是我的代码:
var replaced = str.replace("/\\/", "\\\\");
Run Code Online (Sandbox Code Playgroud)
我无法得到我的输出:
"This is my \\string"
Run Code Online (Sandbox Code Playgroud)
我已经尝试了我能想到的正则表达式和替换值的每个组合.
任何帮助表示赞赏!
根据我的理解,反斜杠点(\.)表示任何字符的一个字符?因为反斜杠是一个转义,它应该是反斜杠反斜杠点("\\.")
这对字符串有什么作用?我刚刚在我正在处理的现有代码中看到了这一点.据我所知,它会将字符串拆分为单个字符.为什么这样做而不是String.toCharArray().那么这会将字符串拆分为一个字符串数组,该数组只包含数组中每个字符串的一个字符串?
只是一个字符串.每次有单引号时添加\'.
我尝试了很多方法从执行中得到一个反斜杠(我不是指输入). html
我可以获得特殊字符作为制表符,新行和许多其他人然后将它们转义为\\t或者\\n或者\\(someother character)当我旁边有一个非特殊字符时,我不能得到一个反斜杠.
我不想要这样的东西:
str = "\apple"; // I want this, to return:
console.log(str); // \apple
Run Code Online (Sandbox Code Playgroud)
如果我试着让角色为0,那么我就会得到a而不是\.
如果我在双引号和单引号字符串的开头添加反斜杠+空格,我会得到不同的结果:
"\ text"
'\ text'
Run Code Online (Sandbox Code Playgroud)
在双引号字符串的输出中,我只看到一个空格.
在单引号字符串的输出中,我看到反斜杠+空格.
那里发生了什么?这是因为'\ '在双引号字符串中被解释为一个特殊字符,但在单引号字符串中,字符是按原样保留的吗?
如果我将字符串更改为此,我会看到相同的输出,即单个斜杠后跟一个空格,然后是文本:
"\\ text"
'\\ text'
Run Code Online (Sandbox Code Playgroud)
在这两种情况下,反斜杠都会被转义.我很困惑为什么他们在这种情况下以同样的方式工作.
是否有一些规则可以帮助解释单引号字符串和双引号字符串如何处理Ruby中的反斜杠之间的根本区别?
我不明白这个Ruby代码:
>> puts '\\ <- single backslash'
# \ <- single backslash
>> puts '\\ <- 2x a, because 2 backslashes get replaced'.sub(/\\/, 'aa')
# aa <- 2x a, because two backslashes get replaced
Run Code Online (Sandbox Code Playgroud)
到目前为止,一切如预期.但是如果我们搜索1 /\\/,并用2替换,编码'\\\\',为什么我们得到这个:
>> puts '\\ <- only 1 ... replace 1 with 2'.sub(/\\/, '\\\\')
# \ <- only 1 backslash, even though we replace 1 with 2
Run Code Online (Sandbox Code Playgroud)
然后,当我们编码3时'\\\\\\',我们只得到2:
>> puts '\\ <- only 2 ... 1 with 3'.sub(/\\/, '\\\\\\')
# \\ …Run Code Online (Sandbox Code Playgroud) 也许最简单的解释一个例子:
$ echo '\&|'
\&|
$ echo '\&|' | while read in; do echo "$in"; done
&|
Run Code Online (Sandbox Code Playgroud)
似乎"read"命令将输入中的斜杠解释为转义并将其删除.我需要逐行处理文件而不改变其内容,我不知道如何在这里停止阅读.有任何想法吗?
我正在尝试'\'字符,使用'\ a\b\c ...'只是为了自己枚举哪些字符Python解释为控制字符,以及什么.这是我发现的:
\a - BELL
\b - BACKSPACE
\f - FORMFEED
\n - LINEFEED
\r - RETURN
\t - TAB
\v - VERTICAL TAB
Run Code Online (Sandbox Code Playgroud)
我尝试的大多数其他字符,'\ g','\ s'等只是评估反斜杠和给定字符的2个字符的字符串.我明白这是故意的,对我来说很有道理.
但'\ x'是一个问题.当我的脚本到达此源代码行时:
val = "\x"
Run Code Online (Sandbox Code Playgroud)
我明白了:
ValueError: invalid \x escape
Run Code Online (Sandbox Code Playgroud)
'\ x'有什么特别之处?为什么它与其他非转义字符的处理方式不同?
我需要编写一个采用当前路径(%~dp0)的脚本,将反斜杠转换为正斜杠并将其进一步传递给某个命令.
由于环境我正在工作,我唯一的选择是Windows shell(不是Powershell,问题不会出现问题).
甚至可以这样做吗?
我似乎遇到了问题.我有一个查询字符串,其值可以包含单引号.这将破坏查询字符串.所以,我试图做一个替代改变'对\'.
这是一个示例代码:
"This is' it".replace("'", "\'");
Run Code Online (Sandbox Code Playgroud)
这个输出仍然是:
"This is' it".
Run Code Online (Sandbox Code Playgroud)
它认为我只是为报价做一个转义字符.
所以我尝试了这两段代码:
"This is' it".replace("'", "\\'"); // \\ for the backslash, and a ' char
"This is' it".replace("'", "\\\'"); // \\ for the backslash, and \' for the ' char
Run Code Online (Sandbox Code Playgroud)
以上两个STILL都会产生相同的输出:
"This is' it"
Run Code Online (Sandbox Code Playgroud)
我似乎只能通过以下方式实现这一点:
"This is' it".replace("'", "\\\\'");
Run Code Online (Sandbox Code Playgroud)
结果如下:
"This is\\' it"
Run Code Online (Sandbox Code Playgroud)
有什么建议?我只是想更换一个'同\'.
它似乎不应该那么困难.