JS在ACM模式中的输入和输出以及数组和字符串的相互转换

一、如何获取输入值?

//js(v8)  直接使用readline()
while(line=readline()){    //  循环获取每行的数据以字符串的形式保存在line中
     //line为每行读取的文件
}  
let line =readline()    //获取一行的数据
//js(node)  需要导入并使用readline()模块
const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;

void async function () {
    while(line = await readline()){
        //line为每行读取的文件
    }
}()

node.js的输入要复杂一些,这只是获取值的第一步,接下来我们要将值转换为我们容易处理的形式

二、将获取到的字符串转换为数组

1、split(" ")

let str="dw 223 ji23 3i2 5o 23";
let arr=str.split();   //不分隔['dw 223 ji23 3i2 5o 23']
let arr=str.split("")   //每个字符都分隔['d', 'w', ' ', '2', '2', '3', ' ', 'j', 'i', '2', '3', ' ', '3', 'i', '2', ' ', '5', 'o', ' ', '2', '3']
let arr=str.split(" ")  //以空格为分隔符['dw', '223', 'ji23', '3i2', '5o', '23']
//同理,如果str中间是","为分割符时,可以使用split(",")来转为数组

这其中最常用的应该是split(" “)或split(”,")

2、Array.from(str)和[…str]展开语法的作用与split(“”)的一致,作用是将每个字符串中的字符都转换为一个数组元素(包括空格或者逗号)

字符串可以访问自身的每个字符,但是字符串是不可变的数值类型,无法通过访问索引来修改数值,如果需要修改的话,可以通过以上的方法转为数组来修改,然后再将数组转回字符串

三、将数字字符串转化为数字

在第二步,将字符串转为数组后,数组中的每个元素还是字符串,第二步的作用相当于只是使用不同方法对原始字符串进行了分割

1、parseInt(str)

(1)如果str前n位为数字字符,则parseInt只会将前n位转为数字;
(2)带小数点的数字字符串是没法直接转的,由于小数点不是数字字符,所以最后只会取整;
(3)带正、负号的数字没法直接转,因为正、负号也不是数字字符
(4)对应的有parseFloat(str)可以处理小数点

2、Number(str)和一元运算符"+"

可以将带正、负号和小数点的数字字符串转化为浮点数
Number(“-22.33”) //-22.33
+“-22.33” //-22.33

3、Math方法(可以处理正负号)

Math.round() //四舍五入
Math.floor() //向下取整
Math.ceil() //向上取整
处理对象可以是字符串也可以是数字

三、输出 console.log()

四、将数组转化为字符串用于输出

1、join(" ")

let str=arr.join(" ")   //在每个元素中间加上空格后拼接为字符串
str=arr.join("")        //直接将数组的每个元素拼接起来
str=arr.join()
str=arr.join(",")   //join与join(",")作用一样,每个元素加上逗号拼接为字符串

2、toString()

(1)作用与join()和join(“,”)一致
(2)其他用法:返回数字对应进制的字符串表示

let num=12;
num.toString(2)   //“1100”
num.toString(8)   //“14”
num.toString(12)   //“10”

3、String()

与join()、join(“,”)、toString()的作用一致,都是加逗号

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值