字符串的操作是算法题当中经常碰见的一类题目,主要考察对string类型的处理和运用。
在处理字符串的时候,我们经常会碰到求字符串长度、匹配子字符串、替换字符串内容、连接字符串、提取字符串字符等操作,那么调用一些简单好用的api可以让工作事半功倍,在TypeScript中,这些api其实和JavaScript的相同,下面整理一些比较常用的api:
length
属性
: 返回字符串的长度
let txt = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
console.log(txt.length)
indexOf()
方法: 返回字符串中指定文本首次出现的索引(从0开始数,未找到则返回 -1):
let txt = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
console.log(txt.indexOf('ABCD'))
lastIndexOf()
方法: 返回字符串中指定文本最后一次出现的索引:
let txt = "ABCDEFGHIJKLABCDEFGH";
console.log(txt.lastIndexOf('ABCD'))
可以添加检索起始位置为第二个参数:txt.indexOf(“ABCD”, 5)、txt.lastindexOf(“ABCD”, 10):
let txt = "ABCDEFGHIJKLABCDEFGH";
console.log(txt.indexOf("ABCD", 5));
console.log(txt.lastIndexOf("ABCD", 10));
includes()
方法: 如果字符串包含指定值,includes() 方法返回 true
let txt = "a,b,c,aaa,bbb,aaa";
console.log(txt.includes("aaa"));
slice()
方法:提取字符串的某个部分并在新字符串中返回被提取的部分:
let txt = "Apple, Banana, Mango";
console.log(txt.slice(7));
console.log(txt.slice(7,13));
如果某个参数为负,则从字符串的结尾开始计数:
let txt = "Apple, Banana, Mango";
console.log(txt.slice(7,-3));
substring()
方法: 类似于 slice(),提取字符串的某个部分并在新字符串中返回被提取的部分。
let txt = "Apple, Banana, Mango";
console.log(txt.substring(7));
console.log(txt.substring(7,10));
substr()
方法:类似于 slice(),但第二个参数是被提取部分的长度。
let txt = "Apple, Banana, Mango";
console.log(txt.substr(7,4));
replace()
方法: 用另一个值替换在字符串中指定的值,返回新字符串,默认只替换首个匹配:
let txt = "Apple, Banana, Mango";
console.log(txt.replace("Banana", "Orange"));
console.log(txt.replace(/BAnana/i, "Orange"));
let txt = "Apple, Banana, Mango, Banana";
console.log(txt.replace(/Banana/g, "Orange"));
toUpperCase()
方法:把字符串转换为大写:
let txt = "Apple, Banana, Mango, Banana";
console.log(txt.toUpperCase());
toLowerCase()
方法:把字符串转换为大写:
let txt = "Apple, Banana, Mango, Banana";
console.log(txt.toLowerCase());
concat()
方法:连接两个或多个字符串:
let txt1 = "Apple";
let txt2 = "Banana";
let txt3 = "Mango";
console.log(txt1.concat(" ", txt2, " ", txt3));
charAt()
方法: 返回字符串中指定下标(位置)的字符串
let txt1 = "Apple";
console.log(txt1.charAt(1));
charCodeAt()
方法: 返回字符串中指定索引的字符 unicode 编码
let txt1 = "Apple";
console.log(txt1.charCodeAt(1));
属性访问(不推荐):
let txt1 = "Apple";
console.log(txt1[1]);
split()
方法: 切片,以某个为分隔,将字符串转换为数组:
let txt1 = "a,b,c";
console.log(txt1.split(""));
console.log(txt1.split(","));
💖 个人简介:2022年度博客之星总排名TOP12、人工智能领域TOP2,人工智能领域优质创作者。
📝 关注我:中杯可乐多加冰
🔥 限时免费订阅:TypeScript算法实战
📝 加入社群 抱团学习:中杯可乐的答疑交流群
🎉 支持我:点赞👍+收藏⭐️+留言📝
字符串的操作是算法题当中经常碰见的一类题目,主要考察对string类型的处理和运用。在处理字符串的时候,我们经常会碰到求字符串长度、匹配子字符串、替换字符串内容、连接字符串、提取字符串字符等操作,那么调用一些简单好用的api可以让工作事半功倍,在TypeScript中,这些api其实和JavaScript的相同,下面整理一些比较常用的api:
根据json字符串自动生成TypeScript interface定义
使用方式:
const interfaceDefinition = require('json-to-ts-interface');
const res = interfaceDefinition(json对象||json字符串, {})
参数配置:
方法第二个参数接收一个对象,对象内容如下:
globalExportMode: 1, // 默认 don't export 1 = don't export 2 = export 3 = export default
lineBreak: '\n', // 换行符
indent: ' ', // 缩进 默认两个空格
interfaceName: 'Res
npm install create-ts-index --save-dev
下一代导出生成工具。 ctix使用TypeScript编译器API。 因此在create-ts-index中解决了许多问题。 例如,单独的项目(由tsconfig.json使用)并支持默认功能,自动检测具有导出语句的文件等。我需要更多帮助来改善ctix。
创建要导出的index.ts文件。 如果index.ts中没有仅用于导出的业务逻辑,则create-ts-index有助于轻松导入。 或者,如果您有图书馆项目需要此导出过程(例如,blueprint.js等)。 cti(create-ts-index)创建导出index.ts文件。
例如,下面的示例目录。
app.ts
component/
Nav.ts
Button.t
replace中的正则replace:把原有的字符替换成新的字符1. replace的字符串替换var str = 'pku2016pku2017';
str = str.replace('pku', 'pkusoft');
console.log(str); // pkusoft2016pku2017在不使用正则的情况下,每次执行只能替换一个字符,每次执行都是从0开始替换,有重复的,无法全部替换2
var arr:Array<any>=[2015,"2015","index"];
var index:number=arr.indexOf("2015");
var sub:number=arr.indexOf(2015);
var i:number=arr.indexOf("index-1");
console.log(index+" "+sub+" "+i);
1 0 ...
charAt() ---返回在指定位置的字符。
concat() ---连接两个或更多字符串,并返回新的字符串。
indexOf() ---返回某个指定的字符串值在字符串中首次出现的位置。
lastInde...
一,substr()
substr() 方法可在字符串中抽取从 start 下标开始的指定数目的字符。 语法:stringObject.substr(start,length)。
1: start 必需。要抽取的子串的起始下标。必须是数值。如果是负数,那么该参数声明从字符串的尾部开始算起的位置。也就是说,-1 指字符串中最后一个字符,-2 指倒数第二个字符,以此类推。
# 前端使用typescript和AES加密一个字符串
在前端使用typescript和AES加密一个字符串的例子中,我们可以使用crypto-js库来实现加密。首先,我们需要安装crypto-js库:
npm install crypto-js
然后,我们可以使用以下代码来加密一个字符串:
```typescript
import * as CryptoJS from 'crypto-js';
const key = CryptoJS.enc.Utf8.parse('1234567890123456');
const iv = CryptoJS.enc.Utf8.parse('1234567890123456');
const plaintext = 'Hello, world!';
const ciphertext = CryptoJS.AES.encrypt(plaintext, key, {
iv: iv,
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7
console.log(ciphertext.toString());
这里,我们使用了一个16字节的密钥和一个16字节的初始化向量来加密一个字符串。加密模式为CBC,填充模式为Pkcs7。
# 后端使用C
在后端使用C语言解密一个AES加密的字符串的例子中,我们可以使用OpenSSL库来实现解密。首先,我们需要安装OpenSSL库:
sudo apt-get install libssl-dev
然后,我们可以使用以下代码来解密一个字符串:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <openssl/aes.h>
int main() {
unsigned char key[] = "1234567890123456";
unsigned char iv[] = "1234567890123456";
unsigned char ciphertext[] = "U2FsdGVkX1+XKjJ5y5+5JfK5J5gJfZzJ";
unsigned char plaintext[128];
AES_KEY aes_key;
AES_set_decrypt_key(key, 128, &aes_key);
AES_cbc_encrypt(ciphertext, plaintext, sizeof(ciphertext), &aes_key, iv, AES_DECRYPT);
printf("%s\n", plaintext);
return 0;
这里,我们使用了一个16字节的密钥和一个16字节的初始化向量来解密一个字符串。解密模式为CBC。注意,解密后的明文可能包含空字符,因此我们需要使用printf函数来输出明文。