首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在字符串长度计数中包含非spintax内容?

如何在字符串长度计数中包含非spintax内容?
EN

Stack Overflow用户
提问于 2019-04-17 21:29:38
回答 1查看 47关注 0票数 0

我需要从我的spintax中提取尽可能长的结果。但是我找不到一种方法来添加未旋转的文本。我的代码是在有可用选项时提取最长的选项,但忽略了spintax花括号之外的内容。

代码语言:javascript
复制
var totalcount = 0;
var text = "{This is|Here} a {sample|demo} of a sentence {made with|created using} spintax";

var longtext = "";
var matches, options, random;
var regEx = new RegExp(/{([^{}]+?)}/);

while((matches = regEx.exec(text)) !== null) {  

  options = matches[1].split("|");
  var long1 = matches[1].split("|");
  var longest = long1[0];
  var strcount = 0;

  for (i = 0; i < long1.length; i++) {
    if (long1[i].length > longest.length) {
        longest = long1[i];
        }
       strcount = longest.length;
     }
      totalcount = totalcount + strcount;
      longtext = longtext + ' ' + longest;


  random = Math.floor(Math.random() * options.length);
  text = text.replace(matches[0], options[random]);
}

document.write('Random spin:<br>'+text+'<br><br>');
document.write('Longest spin ('+strcount+' chars):<br>'+longtext);

我用来计算最长选项的循环只计算spintax变量。因此,它跳过了"a",“一个句子”和"spintax“。

我如何添加这些才能将它们也计算在内?

先谢谢你...很抱歉代码太乱了!

EN

回答 1

Stack Overflow用户

发布于 2019-04-20 23:20:14

Facebook上的一个朋友为我回答了这个问题:)所以,对于任何有同样问题的人,这里是他的解决方案:

代码语言:javascript
复制
<script>
var matches, options, random;

var spintaxString = "{London|Birmingham|Ely} is a {nice|wonderful|fabulous} place with some great {cafes | bars | restaurants}";
var longestString = spintaxString;
var regEx = new RegExp(/{([^{}]+?)}/);


while((matches = regEx.exec(spintaxString)) !== null) {
    options = matches[1].split("|");
    random = Math.floor(Math.random() * options.length);

    var longest = options[0];
    for (i = 0; i < options.length; i++) {
    if (options[i].length > longest.length) {
        longest = options[i];
        }
     }

    longestString = longestString.replace(matches[0], longest);
    spintaxString = spintaxString.replace(matches[0], options[random]);
}

document.write('Random: '+spintaxString+' ('+spintaxString.length+' chars)<br>');
document.write('Longest: '+longestString+'  ('+longestString.length+' chars)<br>');

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

https://stackoverflow.com/questions/55728713

复制
相关文章

相似问题

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