我理解驼峰案例变量名称的原因,但我一直想知道为什么你会骆驼案例一个方法名称?为什么是toString()而不是ToString()?它有什么用途?
我试图将一个对象的顶点X组件组合在一个向量中,就像数组样式的结构一样.
当然这就是方法.
Vec xComponents; or Vec xVals; or simply Vec x;
Run Code Online (Sandbox Code Playgroud)
但是有时我想在id中指定x组件属于哪个,我想这样做.
Vec objXComponents;
Run Code Online (Sandbox Code Playgroud)
然而,彼此相邻的两个首都似乎打破了关于骆驼案的规则,并且可能使其略微不那么可读.
我该怎么办?我知道你可能会说只是剔除修复后使用的组件objX,虽然我认为对于这种情况没问题,我想要一个通用的解决方案/标准.
我试图找出微软是否有这个标准,但我不能在他们的风格指南上找到它.
我有多个 DTO 类,它们从 XML 序列化(反)序列化到 XML。我想对属性使用 PascalCase 的 C# 约定,但我希望它们在 XML 中显示为驼峰式。
例子:
[XmlElement("config")]
public ConfigType Config { get; set; }
Run Code Online (Sandbox Code Playgroud)
这里的属性是,Config但出现config在 XML 中。
我觉得[XmlAttribute]为每个属性使用 a很浪费,因为它们总是与属性名称相同,只有第一个字母不大写。此外,如果我将来更改属性名称,我必须记住更改该名称,[XmlAttribute]否则它们将变得不同步。
是否有可能有一个类范围的属性,表示“即使属性是 pascal 大小写,也对属性使用驼峰大小写”,或者更好的是 XmlSerializer 的设置?
我一直在学习PHP,看到人们如何命名的东西有很多变化.我渴望至少与自己保持一致.
我应该在哪里使用Camel Case以及我应该在哪里使用下划线?
思考:
变量/属性:$userid或$user_id或$userID
课程:MyCustomClass或myCustomClass
功能/方法:my_custom_function()或my_Custom_Function()
任何想法都赞赏.
所以我被困 - 我在这里看了很多答案,但似乎没有解决我的最后一个问题.
通过带有JSON的API,我收到了一个camelcase格式的设备列表.我无法改变这一点.
我需要将这个camelcase翻译成普通语言 -
到目前为止,我已经将大部分词语分开了:
$string = "SomeEquipmentHere";
$spaced = preg_replace('/([A-Z])/', ' $1', $string);
var_dump($spaced);
string ' Some Equipment Here' (length=20)
$trimmed = trim($spaced);
var_dump($trimmed);
string 'Some Equipment Here' (length=19)
Run Code Online (Sandbox Code Playgroud)
哪个工作正常 - 但在一些设备中由缩写组成
"ABSBrakes" - 这需要ABS并与制动器分开
我无法检查彼此相邻的几个大箱,因为它会将ABS和制动器保持在一起 - 还有更多这样的,即:"CDRadio"
所以需要的是输出:
"ABS Brakes"
Run Code Online (Sandbox Code Playgroud)
有没有办法对它进行格式化,如果彼此旁边有大写字母,那么只在该序列的最后一个大写字母前添加一个空格?
我在正则表达式方面不强.
编辑
这两个贡献都很棒 - 以后来这里的人应该读两个答案
最后的问题包括以下模式:
"ServiceOK"成为"Service O K"
"ESP"变成"ES P"
仅由纯大写字母缩写组成的模式由计数小写字母的函数修复,如果没有,则将跳过preg_replace().
但正如Flying在他的回答评论中写道的那样,他的正则表达式可能会有很多实例未被覆盖,并且答案可能是不可能的 - 我不知道这对正则表达式是否是一个挑战.
可能通过添加一些"如果大写后没有小写,则不应该插入空格"规则
使用这个问题作为基础是有一个alogrithm或编码示例将一些文本更改为Pascal或Camel大小写.
例如:
mynameisfred
Run Code Online (Sandbox Code Playgroud)
变
Camel: myNameIsFred
Pascal: MyNameIsFred
Run Code Online (Sandbox Code Playgroud) 我需要拼写检查包含许多camelcased单词的大文档.我想要ispell或aspell来检查单个单词是否拼写正确.
所以,如果这个词:
ScientificProgrezGoesBoink
我很乐意建议这样做:
ScientificProgressGoesBoink
有没有办法做到这一点?(我的意思是,在Emacs缓冲区上运行它.)请注意,我不一定要它建议完整的替代方案.但是,如果它知道Progrez不被识别,我希望能够至少替换那个部分,或者将这个词添加到我的私人词典中,而不是将每个骆驼词包括在词典中.
我刚刚将我们的Json.NET从版本3.5发行版7升级到4.0版本8,并意识到没有以相同的方式完成seralization.序列化包含标准Dictionary的对象时,3.5版本保持字典键不变,但使用4.0时,合同解析器也适用于键.
例如,使用以下JsonSerializerSettings时:
jsonSerializerSettings = new JsonSerializerSettings
{
Converters = new List<JsonConverter> { new JavaScriptDateTimeConverter() },
NullValueHandling = NullValueHandling.Ignore,
ReferenceLoopHandling = ReferenceLoopHandling.Ignore,
ContractResolver = new CamelCasePropertyNamesContractResolver()
};
Run Code Online (Sandbox Code Playgroud)
并在序列化像这样的对象时:
[JsonObject(MemberSerialization.OptOut)]
public class ProductFilter
{
public int Id { get; set; }
public int NodeId { get; set; }
public IDictionary<string, ProductFilterAttribute> Attributes { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
Attributes字典中的键也变成了camelCase.在版本3.5R7中保持不变的那些我觉得这是正确的方法.
3.5R7输出的示例片段:
{
"id": 98659,
"nodeId": 317970,
"attributes": {
"FULL_TIME_USE": {
values: [ { "1" } ],
formattedValue: "...
Run Code Online (Sandbox Code Playgroud)
4.0R8输出的示例代码段:
{
"id": 98659,
"nodeId": …Run Code Online (Sandbox Code Playgroud) 我需要能够在Emacs中导航和编辑骆驼外壳单词的部分内容.功能类似于Intellij IDEA中的驼峰驼峰.例如,我需要将字符串BlahFooBar中的Blah,Foo和Bar标识为3个单独的单词,以便我可以导航/编辑它们,就像它们是单独的单词一样.
我试过玩语法表
(modify-syntax-entry ?A ".")
(modify-syntax-entry ?F ".")
Run Code Online (Sandbox Code Playgroud)
这具有制作lah,oo和ar字以及字符B和F字分隔符的效果.因此导航向后(和反向杀死单词)不能按预期工作.
我需要的是基于正则表达式而不是分隔符的单词边界.
我第一次在正则表达式中使用捕获组,我想知道我的问题是什么,因为我假设正则表达式引擎从左到右查看字符串.
我正在尝试将UpperCamelCase字符串转换为hyphened-lowercase-string,例如:
HelloWorldThisIsATest => hello-world-this-is-a-test
Run Code Online (Sandbox Code Playgroud)
我的前提条件是字母字符串,所以我不需要担心数字或其他字符.这是我尝试过的:
mb_strtolower(preg_replace('/([A-Za-z])([A-Z])/', '$1-$2', "HelloWorldThisIsATest"));
Run Code Online (Sandbox Code Playgroud)
结果:
hello-world-this-is-atest
Run Code Online (Sandbox Code Playgroud)
这几乎是我想要的,除了a和之间应该有一个连字符test.我已经包含A-Z在我的第一个捕获组中,所以我会假设引擎看到AT并连接了那个.
我究竟做错了什么?