·

JS生成任意长度的随机汉字

Published at 2024-08-28 11:15:56Viewed 84 times
Professional article
Please reprint with source link

最近突发奇想,想试试用编程方式请求百度来进行随机搜索,这就需要随机生成一窜汉字字符。经过网络上的一番搜索,发现可以用unicode编码来实现。

Unicode编码是16进制数,其中汉字对应范围是[\u4e00-\u9fa5],而4e00和9af5是16进制值。因此我们需要通过parseInt转换,得到他们10进制的数值19968-40869,也就是下文中的start和end。

接着我们再随机生成start和end之间的一个数,然后将这个数转换成16进制,并用\u拼接起来,这样一个随机的代表汉字的Unicode编码就产生了。如果需要生成多个汉字,则直接使用for循环即可。最后用eval输出一下生成的随机Unicode编码,就能得到一窜随机的汉字。

const createRandomChinese = (count:number) => {
    const start = parseInt('4e00', 16)
    const end = parseInt('9fa5', 16)
    let name = ''
    for(let i = 0; i < count; i++) {
        const cha = Math.floor(Math.random() * (end - start))
        name += '\\u' + (start + cha).toString(16)
    }
    return eval(`'${name}'`)
}

测试结果如下:

最后提一嘴,如何通过fetch对百度发起随机搜索请求。首先通过开发者模式,观察搜索过程中的网络请求,发现想通过编程方式对百度发起搜索请求,可以用fetch发送GET请求:

fetch('https://www.baidu.com/s?wd=%E8%A1%A8%E7%A4%BA%E8%AE%BA&rsv_spt=1&rsv_iqid=0xe96276d80016e9b0&issp=1&f=8&rsv_bp=1&rsv_idx=2&ie=utf-8&tn=baiduhome_pg&rsv_enter=1&rsv_dl=tb&rsv_sug2=0&rsv_btype=i&inputT=1778&rsv_sug4=2384')

这里的wd参数,就是我们搜索时输入的字符串。因此,上面我们有了随机的汉字字符串,想要借此发起随机搜索请求,就很容易了,直接这么写

const RandomSearch = (count:number) => {
    const start = parseInt('4e00', 16)
    const end = parseInt('9fa5', 16)
    let name = ''
    for(let i = 0; i < count; i++) {
        const cha = Math.floor(Math.random() * (end - start))
        name += '\\u' + (start + cha).toString(16)
    }
    let chinese = eval(`'${name}'`)
    fetch(`https://www.baidu.com/s?wd=${chinese}&rsv_spt=1&rsv_iqid=0xe96276d80016e9b0&issp=1&f=8&rsv_bp=1&rsv_idx=2&ie=utf-8&tn=baiduhome_pg&rsv_enter=1&rsv_dl=tb&rsv_sug2=0&rsv_btype=i&inputT=1778&rsv_sug4=2384`)
    .then((res)=>console.log(res))
}

不过这可能只能在控制台可以执行,不然会有跨域问题,在本文中就不多说了。

0 人喜欢

Comments

There is no comment, let's add the first one.

弦圈热门内容

Grothendick经典同调代数文章:Some aspects of homological algebra

这是Grothendick著名的关于同调代数的文章Tôhoku paper的英文翻译版,原文是法语版,标题为Sur quelques points d'algèbre homologique。英文翻译为:Some aspects of homological algebra。该文章概述了很多同调代数的重要概念,其中基本都跟代数几何有联系,并且里面不少概念其实是Grothendick本人提出来的,如abelian categories。可以说这篇文章是同调代数的经典文章,在数学圈内也时常有人推荐看这篇文章,毕竟这可是祖师爷亲自从同调代数的基础概念一步步讲起,这对学同调代数或者代数几何的人都有很大裨益。我收藏这篇文章的时候都2021年了,现在拿出来推荐给大家!之后我还会把法语原版也发出来。

Get connected with us on social networks! Twitter

©2024 Guangzhou Sinephony Technology Co., Ltd All Rights Reserved