对于我的命令行界面,在开头有一个小的ASCII艺术通常很好,但那些通常包含许多反斜杠.
例如:
System.out.println(" _____ _______ _____ _ __ ");
System.out.println(" / ____|__ __|/\ / ____| |/ / ");
System.out.println("| (___ | | / \ | | | ' / ");
System.out.println(" \___ \ | | / /\ \| | | < ");
System.out.println(" ____) | | |/ ____ \ |____| . \ ");
System.out.println("|_____/ |_/_/ \_\_____|_|\_\ ");
Run Code Online (Sandbox Code Playgroud)
但由于每个"\"需要一个"\\"这往往代码看起来很丑陋,它是很难找到/在"字体"修正错误.有没有办法告诉Java NOT使用转义序列?
我知道在编程中逃避反斜杠.但是我将命令行参数传递给Python程序进行解析.空白是无关紧要的,但是通过命令行,空格确实很重要.所以我试图将除第一个元素之外的所有argv []参数连接到一个字符串然后解析.但是,在for循环中永远不会遇到单个'\'的标记.
命令行参数(注意'\'周围的空格):
((1 * 2) + (3 - (4 \ 5)))
Run Code Online (Sandbox Code Playgroud)
程序:
import sys
string = ""
for token in sys.argv[1:len(sys.argv)]:
print(token)
if "\\" in r"%r" % token:
print("Token with \\ found")
string += token
print(string)
print("done")
Run Code Online (Sandbox Code Playgroud) 我有一个正则表达式,如果没有后跟其中一个字符,则从字符串中删除任何反斜杠:\ /或}.
它应该变成这个字符串:
foo\bar\\batz\/hi
Run Code Online (Sandbox Code Playgroud)
进入:
foobar\\batz\/hi
Run Code Online (Sandbox Code Playgroud)
但问题在于它正在处理每个反斜杠.因此它遵循规则,因为它删除了第一个反斜杠,并忽略第二个反斜杠,因为它后跟另一个反斜杠.但当它到达第3个时,它会删除它,因为它不会被另一个跟随.
我当前的代码如下所示: str.replace(/\\(?!\\|\/|\})/g,"")
但结果字符串如下所示: foobar\batz\/hi
如何让它跳过第3个反斜杠?或者这是一种做某种明确的否定搜索和替换类型的事情?例如.替换'\',但不要替换'\\','\ /'或'\}'?
请帮忙!:)
编辑
对不起,我应该解释一下 - 我使用的是javascript,所以我不认为我可以做负面的lookbehinds ...
我尝试将代码保持在80个字符以内,因此很容易在我设置的标准窗口中并排查看.在这样做时,我有一个像这样的Python v2.7结构:
subseq_id_to_intervals_dict, subseq_id_to_ccid_formats_dict, subseq_id_to_min_max_count_dict = map_cases(opts,
format_to_ccid_funcs,
sys.stdin)
Run Code Online (Sandbox Code Playgroud)
所以我把它分解成这样:
subseq_id_to_intervals_dict,
subseq_id_to_ccid_formats_dict,
subseq_id_to_min_max_count_dict = map_cases(opts,
format_to_ccid_funcs,
sys.stdin)
Run Code Online (Sandbox Code Playgroud)
但那导致了错误
NameError:未定义名称"subseq_id_to_intervals_dict"
直到我添加反斜杠:
subseq_id_to_intervals_dict, \
subseq_id_to_ccid_formats_dict, \
subseq_id_to_min_max_count_dict = map_cases(opts,
format_to_ccid_funcs,
sys.stdin)
Run Code Online (Sandbox Code Playgroud)
为什么行尾的逗号不足以告诉Python理解语法而不会出错?有没有反斜杠的清洁方法吗?
编译以下代码段时,gcc和clang都只发出警告.注意\下一个后面的空格int:
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int \
a = 10;
printf("%d\n", a);
}
Run Code Online (Sandbox Code Playgroud)
GCC:
main.c:7:6:警告:反斜杠和换行符以空格分隔[默认启用]
铛:
main.c:7:7:警告:反斜杠和换行符以空格分隔int ^
在5.1.1.2的c99标准中,它说:
删除反斜杠字符()后面紧跟一个新行字符的每个实例,拼接物理源代码行以形成逻辑源代码行.
为什么C编译器不符合C标准?我认为只有他们的创作者决定不这样做.我在gcc邮件列表上发现了一条消息,我认为这引起了这种行为:http://gcc.gnu.org/ml/gcc-patches/2000-09/msg00430.html.在那里,他们说这是完成的,因为尾随空格是常见的,他们不想将它们视为错误.这有多常见?
我尝试使用 .join 方法连接两个字符串的元组,如下所示。
>>> my_tuple = ("parent", "child")
>>> "\\".join(my_tuple)
Run Code Online (Sandbox Code Playgroud)
我希望它会回来parent\child,然而,它又回来了parent\\child。
为什么是这样?如果我尝试简单地打印它,则用另一个反斜杠转义反斜杠效果很好。
>>> print "parent\\child"
>>> parent\child
Run Code Online (Sandbox Code Playgroud)
在 Windows 7 上的 Python 2.7.3 中观察到。
我需要一些帮助来从 Json 字符串中删除反斜杠。
这是我从服务器端获得的响应。
"response":"{\"time_zone\":\"\",\"session_token\":\"abcdefgHijklomopqrstuvwxyz\",\"user_login\":\"abc\",\"user_profile_img\":\"http://jhjhjhj.org/system/photos/62/medium/images.jpg?1462446436\",\"success\":\"0\",\"org_admin\":\"\",\"user_id\":\"62\",\"user_org_id\":\"101\",\"phone_mobile\":\"510-427-9639\",\"user_email\":\"abc@pdmoffice.com\"}"}
Run Code Online (Sandbox Code Playgroud)
我为从这个字符串中删除反斜杠所做的
result.replaceAll("\\","");
比之后它会给我这个不是 Json 格式的字符串。
{"response":"{"time_zone":"","session_token":"nskfndkjfsfsdffjsdfd","user_login":"newoff2","user_profile_img":"http://absdds.org/system/photos/62/medium/images.jpg?1462446436","success":"0","org_admin":"","user_id":"62","user_org_id":"101","phone_mobile":"510-427-9639","user_email":"hjhjh@pdmoffice.com"}"}
Run Code Online (Sandbox Code Playgroud)
它给我解释
org.json.JSONException: Unterminated object at character 17 of
{"response":"{"time_zone":"","session_token":"kjshhdscncnxzcxclx","user_login":"newoff2","user_profile_img":"http://abcd.org/system/photos/62/medium/images.jpg?1462446436","success":"0","org_admin":"","user_id":"62","user_org_id":"101","phone_mobile":"510-427-9898","user_email":"sdgas@pdmoffice.com"}"}
Run Code Online (Sandbox Code Playgroud)
如何使用正确的 Json 格式删除此反斜杠?
提前致谢
我正在尝试通过 Laravel 的迁移系统向 MySQL 中的列添加默认值。下列:
$table->string(...)->default('App\User')->change(); // OR
$table->string(...)->default('App\\User')->change();
Run Code Online (Sandbox Code Playgroud)
生成默认值AppUser代替App\User。如果我这样做:
$table->string(...)->default('App\\\User')->change();
Run Code Online (Sandbox Code Playgroud)
然后它会产生一个默认值App\\User。我也尝试利用DB::raw()inside ,但得到了相同的结果。default()
知道会发生什么吗?我在任何地方都找不到有关该default()功能的任何文档。
我需要替换字符串中的单个反斜杠。我正在尝试执行 '\' 但它给了我双反斜杠。当我执行 '\' 时,它会在位置 0 处抛出错误错误转义(模式结束)
string = 'abrakadabra'
string.replace('a','\\')
#or
re.sub('a','\\','abrakadabra')
In [47]: string.replace('a','\'')
Out[47]: "'br'k'd'br'"
In [48]: string.replace('a','\')
File "<ipython-input-48-e884682860ae>", line 1
string.replace('a','\')
^
Run Code Online (Sandbox Code Playgroud)
语法错误:扫描字符串文字时 EOL
In [49]: string.replace('a','\\')
Out[49]: '\\br\\k\\d\\br\\'
In [50]:
Run Code Online (Sandbox Code Playgroud)
期待结果:\br\k\d\br\
我想更换一个\带有\\并将其与除特殊变数,我需要它的工作就一切正常。抛出错误Illegal characters in path.可能是因为它认为 \t 是一个字符,它是制表符,因此不允许在路径中
使用 Newtonsoft.Json 将变量从 json 文件加载到类中
public class WebsiteConfig
{
public string Name { get; set; }
public string Directory { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我已经尝试过
var escapedir = Regex.Replace(Directory, @"\\", @"\");任何可能的方式来形成var escapedir = Directory.Replace("\", "\\");.
尝试Regex.Replace("C:\test", @"\", @"\\");(C:\test 与目录中的完全相同)工作得很好,然后在 foreach 中我试图将目录与文件名结合起来。
当前代码的“转储”:
var json = File.ReadAllText(Path.Combine(Environment.CurrentDirectory, "config.json"));
_config = JsonConvert.DeserializeObject<Config>(json);
foreach(WebsiteConfig website in _config.WebsiteConfigList)
{
for (int i = 0; i <= 9; …Run Code Online (Sandbox Code Playgroud)