首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在不影响字符串的情况下修剪空白

在不影响字符串的情况下修剪空白
EN

Stack Overflow用户
提问于 2016-03-09 06:02:06
回答 2查看 76关注 0票数 2

所以,我最近在修剪空格方面发现了this example,但我发现它也会影响代码中的字符串。例如,假设我正在做一堂关于字符串比较的课程,为了证明"Hello World!""Hello World!"是不同的,我需要代码压缩不会对这两个字符串产生任何影响。

我使用空格压缩,这样具有不同格式样式的人就不会因为使用我不使用的东西而受到惩罚。例如,我喜欢这样格式化我的函数:

代码语言:javascript
运行
复制
function foo(){
    return 0;
};

而其他人可能会这样格式化它:

代码语言:javascript
运行
复制
function foo()
{
    return 0;
};

所以我在标点符号周围使用了空格压缩,以确保它始终是相同的,但我不希望它影响字符串中的任何内容。有没有办法在JavaScript的replace()函数中添加异常?

EN

回答 2

Stack Overflow用户

发布于 2016-03-09 06:31:59

更新:

检查此jsfiddle

代码语言:javascript
运行
复制
var str='dfgdfg   fdgfd fd gfd  g print("Hello      World!"); sadfds                dsfgsgdf' 
var regex=/(?:(".*"))|(\s+)/g;
var newStr=str.replace(regex, '$1 ');
console.log(newStr);
console.log(str);

在此代码中,它将处理除带引号的字符串之外的所有内容

要更轻松地使用代码,您可以查看正则表达式是如何工作的:https://regex101.com/r/tG5qH2/1

票数 1
EN

Stack Overflow用户

发布于 2016-03-10 02:25:45

我在这里做了一个jsfiddle:https://jsfiddle.net/cuywha8t/2/

代码语言:javascript
运行
复制
var stringSplitRegExp = /(".+?"|'.+?')/g;
var whitespaceRegExp = /\s+\{/g;
var whitespaceReplacement = "{"

var exampleCode = `var str = "test test test" + 'asdasd "sd"';\n`+
                  `var test2 = function()\n{\nconsole.log("This is a string with 'single quotes'")\n}\n`+
                  `console.log('this is a string with "double quotes"')`;

console.log(exampleCode)

var separatedStrings =(exampleCode.split(stringSplitRegExp))

for(var i = 0; i < separatedStrings.length; i++){
    if (i%2 === 1){
    continue;
  }
  var oldString = separatedStrings[i];
  separatedStrings[i] = oldString.replace(whitespaceRegExp, whitespaceReplacement)
}

console.log(separatedStrings.join(""))

我相信这就是你要找的。它可以处理字符串中包含双引号的情况,等等,而无需修改。这个例子只做了你在文章中提到的花括号的格式化。

基本上,split的行为允许在阵列中包含拆分器。由于您知道拆分总是在两个非字符串元素之间进行,因此可以通过循环遍历和修改每个偶数索引的数组元素来利用这一点。

如果你想做一般的空格替换,你当然可以修改regexp或者执行多遍,等等。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35878916

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档