有人能指出我从C源代码中删除字符串的程序吗?例
#include <stdio.h>
static const char *place = "world";
char * multiline_str = "one \
two \
three\n";
int main(int argc, char *argv[])
{
printf("Hello %s\n", place);
printf("The previous line says \"Hello %s\"\n", place);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
变
#include <stdio.h>
static const char *place = ;
char * multiline_str = ;
int main(int argc, char *argv[])
{
printf(, place);
printf(, place);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我正在寻找的是一个非常像stripcmt的程序 ,我只想删除字符串而不是注释.
我正在寻找一个已经开发的程序而不仅仅是一些方便的正则表达式的原因是因为当你开始考虑所有极端情况(字符串中的引号,多行字符串等)时,事情通常会开始(比)更复杂第一次出现.REs可以实现的限制是有限制的,我怀疑这项任务是不可能的.如果你认为你有一个非常强大的正则表达式随时提交,但请不要sed 's/"[^"]*"//g'像天真的建议.
(不需要在注释中对(可能是未结束的)字符串进行特殊处理,这些字符串将首先被删除)
支持具有嵌入换行符的多行字符串并不重要(不合法C),但必须支持跨越以\结尾的多行的字符串.
我来自经典的ASP,我做了:
myVar = request.querystring("ID")
response.redirect("lol.asp");
Run Code Online (Sandbox Code Playgroud)
在.net中它是:
myVar = Request.Querystring["ID"];
Response.Redirect("lol.aspx");
Run Code Online (Sandbox Code Playgroud)
方括号何时用于圆形方括号?它们意味着什么?我现在有点理解它代表一个索引?
因此,我们正在我们的代码库中集成另一个项目.它不符合我们的格式规则.我在配置保存后进行了自动格式化.所以,我可以转到每个文件并再次保存,但有没有办法编写Eclipse脚本,以便它将格式规则应用于我工作区中的每个文件?
我有一些看起来像这样的 XML(在粘贴新的 Maven 依赖项之后):
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>3.6.0.Final</version>
</dependency>
<dependency>
<groupId>net.sourceforge.jtds</groupId>
<artifactId>jtds</artifactId>
<version>1.3.0</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.11</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
当我选择文本并选择Source 时?格式(默认为 Ctrl+Shift+F),我希望它最终看起来像这样:
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>3.6.0.Final</version>
</dependency>
<dependency>
<groupId>net.sourceforge.jtds</groupId>
<artifactId>jtds</artifactId>
<version>1.3.0</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.11</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
但相反,它看起来像这样:
</dependency><dependency>
<groupId>
org.hibernate
</groupId>
<artifactId>
hibernate-entitymanager
</artifactId>
<version>
3.6.0.Final
</version>
</dependency>
<dependency>
<groupId>
net.sourceforge.jtds
</groupId>
<artifactId>
jtds
</artifactId>
<version>
1.3.0
</version>
Run Code Online (Sandbox Code Playgroud)
糟糕!
如果我不选择任何文本并尝试格式化整个文件,它会做同样的事情:在所有文本(字符数据)之前放置换行符。
我玩过Window 中的设置?喜好 ?XML ? XML 文件 ? 编辑?Formatting,但似乎都没有解决这个问题。当然没有勾选“在文本之前插入烦人的换行符”复选框!
有关如何解决此问题的任何想法?FWIW,格式化 Java …
一个非常奇怪的,可能意味着Visual Studio 2012的有用行为.当我在vb.net中输入double时,如:
Dim myD as Double = 1.4
Run Code Online (Sandbox Code Playgroud)
当我按下Enter键以另一种方式移动我的焦点时,格式化开始并将上面的内容更改为:
Dim myD as Double = 1.39999999999999998
Run Code Online (Sandbox Code Playgroud)
或1.6作为
Dim myD as Double = 1.6000000000000001
Run Code Online (Sandbox Code Playgroud)
所有双打似乎都不会发生此行为.1.3,1.5,1.7和1.8请看这个youtube电影中的行为:http: //youtu.be/afw4jg58-aU
为什么,更重要的是,我该如何防止这种情况?
编辑:
安装的扩展程序是:

第二次编辑
这种行为似乎消失了.我不知道是什么造成了这种情况,以便将来参考,这对任何人都没用,但就目前而言,我很高兴我没有按照建议进行故障排除.
我的问题是,当我使用Ctrl + /注释掉一行时,
// comment
Run Code Online (Sandbox Code Playgroud)
然后自动格式化代码,
// comment
Run Code Online (Sandbox Code Playgroud)
注释仍将在我不想保留的“ //”后面包含空格。
我已经检查了“设置”>“编辑器”>“ Java”>“包装和括号”选项,以及其他选项卡。
提前致谢。
考虑来自SICP的这个迭代因子过程.
(define (fact-iter product counter max-count)
(if (> counter max-count)
product
(fact-iter (* counter product)
(+ counter 1)
max-count)))
Run Code Online (Sandbox Code Playgroud)
在这里,我们看到:
为什么会这样?间距让我感到困惑.为什么它不能像java(在代码的每个内部添加四个空格)?我该如何格式化lisp代码?
我想以这种方式格式化我的 C++ 转换运算符:
Class * foo = static_cast< Class * >( bar );
Run Code Online (Sandbox Code Playgroud)
Visual Studio 坚持删除尖括号内的空格:
Class * foo = static_cast<Class*>( bar );
Run Code Online (Sandbox Code Playgroud)
我如何防止它这样做?
使用Husky,我已经设置了package.json一个precommit钩子,以便在每次提交之前使用Prettier格式化我的JavaScript代码:
{
"name": "prettier-demo",
"scripts": {
"precommit": "prettier --write **/*.js && git add ."
},
"devDependencies": {
"husky": "^0.14.3",
"prettier": "^1.8.2"
}
}
Run Code Online (Sandbox Code Playgroud)
这很好,但有两个缺点:
如果我有一个包含数千个JavaScript文件的大型项目,我必须等待Prettier处理所有这些文件,即使只有少数文件已经更改; 这可能需要很长时间,并且在完成每次提交时都会很快就会紧张
有时我想只提交几个文件进行提交,将其他更改留在提交之外; 因为我git add .在运行Prettier后做了一切,我的所有更改总是会在提交中结束
如何在每次提交之前运行Prettier 只对已经上传的文件,忽略未分级或未更改的文件?
我以前的公司过去常常在接口前面加上I. 例如:ICar。我发现这很有用,因为只需点击 0 次即可回答一个类是接口还是具体类。然而,我现在的公司不采用该规则,只是正常命名接口,而不用任何前缀。现在,如果我遇到这种类型的代码:
Car car = new Tesla();
Run Code Online (Sandbox Code Playgroud)
我必须进入 Car 类才能知道它是接口还是类。我觉得这很烦人。有没有办法让 IDE(在这种情况下是 Android Studio/IntelliJ)以不同的方式为它们着色/设置样式?(就像他们处理字段一样,即字段用紫色着色,因此您知道您不是在处理局部变量)。
code-formatting ×10
eclipse ×2
asp-classic ×1
asp.net ×1
c ×1
c# ×1
casting ×1
comments ×1
double ×1
git ×1
java ×1
javascript ×1
lisp ×1
prettier ×1
reformatting ×1
scheme ×1
string ×1
utility ×1
vb.net ×1
xml ×1