这是一个艰难的 我现在已经有一段时间没用了,所以现在我希望你们中的一些人能够知道答案。 我在这里有一个很长的数字:
122111312121142113121
没有数字高于4或低于1
现在我需要找出一个随机序列(随机数,但除了1-4之外的任何内容,以及随机长度)是否存在于该较长的数字内。
作为一个例子,我有序列 13121211 ,我需要找出它是否在上面的数组中(在这种情况下它是,但总有可能它不是!)。
不幸的是,我仅限于使用纯HTML和JavaScript,没有jQuery或任何像AngularJS这样的框架。
这个数字大约有600个字符,因此无需将所有数据输入数组即可获得解决方案!
我觉得应该有一个简单的方法来解决这个问题,但我无法弄清楚如何解决这个问题。
提前致谢! :)
答案 0 :(得分:0)
你如何存储长号码?如果它是一个数字,那只是字符串转换的问题:
[1, 2, 3, 4, 5, 6].join(''); // -> "123456"
['1', '2', '3', '4', '5', '6'].join(''); // -> "123456"
如果你已经有了一个字符串,那就更容易了,但是同样的功能也可以。
如果你有一组字符或整数,只需使用join:
using System.Reflection;
using System.ComponentModel;
class MaskDictionary
{
// ... properties ...
public string ToString(string format)
{
string val = format;
foreach (PropertyInfo property in typeof(MaskDictionary).GetProperties())
{
val = val.Replace("{" + property.Name + "}", property.GetValue(this).ToString());
}
return val;
}
}
答案 1 :(得分:0)
使用string.indexOf(sequence),其中字符串和序列由您定义。如果返回-1,则序列不包含在字符串中。作为一个。 Chiesa提到,。indexOf()需要两个字符串,因此您可能需要使用.join()函数。
答案 2 :(得分:0)
如果我正确理解了这个问题,你只需在另一个内部寻找一个字符串。 JavaScript编号不允许600位数字,但这没关系,因为您还没有将其视为数字 - 只是一系列字符。
尝试这样的事情:
var number='122111312121142113121';
var search='13121211';
var position=number.indexOf(search);
if(position>-1) alert('Found at '+position);
else alert('Not Found');
indexOf
方法正在完成所有艰苦的工作。索引-1
表示失败,因为索引从零开始,这意味着第一个成功的位置是0
。
你在这个问题上避免使用jQuery of Angular是正确的,就像试图用热核装置破解核桃一样。
修改:现代 JavaScript有includes
方法返回true
或false
而不是位置。当然不是IE。
答案 3 :(得分:0)
这将生成随机字符串并在bigNumber
中搜索它们。
minSubstr
是我们检查的随机字符串的最小长度
maxSubstr
是其最大长度
numTries
是我们测试的随机字符串数量
所有匹配的字符串都被抛入我们的输出div。
<强> JS 强>
var bigNumber = "122111312121142113121";
var output = document.getElementById("output");
var minSubstr = 4;
var maxSubstr = 6;
var numTries = 1000;
function findNumbers(){
for(var i = 0; i < numTries; i++){
var num = getRandNum();
if(bigNumber.indexOf(num) !== -1) output.innerHTML += num + ' <br/>';
}
}
function getRandNum(){
var ret = '';
var len = getRandom(minSubstr, maxSubstr);
for(var i = 0; i < len; i++){
ret += getRandom(1,4);
}
return ret;
}
function getRandom(min, max) {
return Math.floor(Math.random() * (max - min + 1)) + min;
}
findNumbers();
<强> HTML 强>
<div id="output"></div>