-
java正则表达式怎么提取下面一串字符串中的文字
2016-11-28 06:39:06我的问题是比如下面这个字符串,我想要提取出VG Name这个字符串以及后面的 /dev/vg00这个字符串,请问在java正则表达式里面有什么好的方法能够获取呢?对正则表达式用得不是很熟悉,所以想请高手指教下: VG Name /... -
如何求两个字符串的交集? 用js求字符串交集和字符串相减结果
2020-08-16 19:41:44有时候我们可能会求两个字符串的交集,也就是找到两个字符串里面相同的元素,偶尔也会需要把一个字符串里的与另外的一个字符串重合的元素给删除掉,所以诞生了这篇文章。下面给出案例: 已知有a,b两个字符串,字符串...用js求字符串交集和字符串相减结果
有时候我们可能会求两个字符串的交集,也就是找到两个字符串里面相同的元素,偶尔也会需要把一个字符串里的与另外的一个字符串重合的元素给删除掉,所以诞生了这篇文章。下面给出案例:
已知有a,b两个字符串,字符串都是由多个词语组成且中间有空格隔开,想要知道a,b字符串有哪些词语相同,并且把其中a字符串内a&b同时存在(即交集)的词语给删除掉,得到一个新的字符串。解题思路:
1.先把字符串使用split()函数转变成数组
2.再使用filter()函数求得交集
3.使用splice()函数删除双重循环下相同的词语元素
4.把交集和结果集输出到页面上先看效果图:
核心代码如下:
<script> // js如何获取textarea框中的值 // textareaElement的value属性行,而innerHTML属性不行 function trans() { //通过id获取dom对象 var textarea_source = document.getElementById('textarea_source'); var textarea_translate = document.getElementById('textarea_translate'); var textarea_jiao = document.getElementById('textarea_jiao'); var textarea_result = document.getElementById('textarea_result'); //获取dom对象的字符串 var textSourse = textarea_source.value; var textfocus = textarea_translate.value; //以空格分割字符串转变为a,b数组 var a = textSourse.split(" "); var b = textfocus.split(" "); //求得a,b两个数组的交集 var jiao = a.filter((val) => new Set(b).has(val)); //判断是否需要继续运行下去,如果没有交集,终止程序 if (jiao.length==0){ //弹框提示 alert('不存在交集,字符串无法相减') //终止程序 return; } //输出交集 textarea_jiao.innerHTML = jiao.join(' '); //字符串减法运算得到结果字符串数组 var result_string = arrChange(a, b); //转换数组为字符串且替换非空字符输出结果集 textarea_result.value = result_string.join(' ').replace(/\s+/g, ' '); //去重 quchongstr(); } /*数组相减的方法*/ function arrChange(a, b) { for (var i = 0; i < b.length; i++) { for (var j = 0; j < a.length; j++) { if (a[j] == b[i]) {//如果是id相同的,那么a[ j ].id == b[ i ].id a.splice(j, 1); j = j - 1; } } } return a; } //去重的方法 function quchongstr() { //通过id获取dom对象 var textarea_translate = document.getElementById('textarea_result'); //得到具体值 var str = textarea_translate.value; //转换为数组 var a = str.match(/\S+/g);//等价于str.split(/\s+/g)// \s空白符,\S非空白符 //排序 a.sort(); //双重循环进行去重 for (var i = a.length - 1; i > 0; i--) { if (a[i] == a[i - 1]) { a.splice(i, 1); } } console.log('去重成功!'); //数组转换成字符串 var finalstr = a.join(" "); //输出字符串到页面上 textarea_translate.value = finalstr; } </script>
注释得十分详细,请直接看注释,下面是html代码:
<!DOCTYPE html> <html lang="cn"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <!-- 上述3个meta标签*必须*放在最前面,任何其他内容都*必须*跟随其后! --> <title>字符串求交集和相减的结果集-字符串工具集</title> <!-- Bootstrap --> <link href="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/css/bootstrap.min.css" rel="stylesheet"> <!-- HTML5 shim 和 Respond.js 是为了让 IE8 支持 HTML5 元素和媒体查询(media queries)功能 --> <!-- 警告:通过 file:// 协议(就是直接将 html 页面拖拽到浏览器中)访问页面时 Respond.js 不起作用 --> <!--[if lt IE 9]> <script src="https://cdn.jsdelivr.net/npm/html5shiv@3.7.3/dist/html5shiv.min.js"></script> <script src="https://cdn.jsdelivr.net/npm/respond.js@1.4.2/dest/respond.min.js"></script> <![endif]--> <meta charset="UTF-8"> <style> .my_title { /*width: 200px;*/ margin: 50px 400px; font-size: 50px; text-align: center; } .my_part { margin: 35px; } h2 { text-align: center; font-size: 50px; font-weight: bold; font-family: 幼圆; margin: 50px 200px; } .my_content { margin: 20px; text-align: center; } </style> </head> <body> <article class="my_title"> <div class="panel panel-primary"> <div class="panel-heading"> <h3 class="panel-title">字符串工具集 2020年8月16日</h3> </div> <div class="panel-body"> <h2>字符串求交集和相减的结果集</h2> <p class="lead" style='text-align: left;'> 已知有a,b两个字符串,字符串都是由多个词语组成且中间有空格隔开,想要知道a,b字符串有哪些词语相同,并且把其中a字符串内a&b同时存在(即交集)的词语给删除掉,得到一个新的字符串。</p> <p class="lead" style="text-align: left;"> 解题思路:<br>1.先把字符串使用split()函数转变成数组<br>2.再使用filter()函数求得交集<br>3.使用splice()函数删除双重循环下相同的词语元素<br>4.把交集和结果集输出到页面上 </p> </div> </div> </article> <article class="my_part"> <div class="my_content"> <div style="display: inline-block;"> <textarea name="my_source" id="textarea_source" placeholder="请输入被减字符串 a:" cols="120" rows="15"></textarea> </div> <div style="display: inline-block;"> <textarea name="my_tanslate" id="textarea_translate" placeholder="请输入减字符串 b:" cols="120" rows="15"></textarea> </div> <div style="display: inline-block;"> <textarea name="my_tanslate" id="textarea_jiao" placeholder="交集输出~" cols="120" rows="15"></textarea> </div> <div style="display: inline-block;"> <textarea name="my_tanslate" id="textarea_result" placeholder="结果集输出~" cols="120" rows="15"></textarea> </div> <br> <button type="button" class="btn btn-primary" id="myButton4" data-complete-text="Loading finished" onclick="trans()">请点击我 </button> <br> </div> </article> </body> 【核心代码放置处】 </html>
需要使用请直接把核心代码替换html里面的末尾**【核心代码放置处】**既可
-
字符串处理-一个字符串包含另一个字符串的所有字符
2012-09-17 18:06:57从算法是讲,什么方法能最快的查出所有小字符串里的字母在大字符串里都有? 比如,如果是下面两个字符串: String 1: ABCDEFGHLMNOPQRS String 2: DCGSRQPOM 答案是true,所有在string2里的字母...假设这有一个各种字母组成的字符串,假设这还有另外一个字符串,而且这个字符串里的字母数相对少一些。从算法是讲,什么方法能最快的查出所有小字符串里的字母在大字符串里都有?
比如,如果是下面两个字符串:
String 1: ABCDEFGHLMNOPQRS
String 2: DCGSRQPOM
答案是true,所有在string2里的字母string1也都有。如果是下面两个字符串:
String 1: ABCDEFGHLMNOPQRS
String 2: DCGSRQPOZ
答案是false,因为第二个字符串里的Z字母不在第一个字符串里。
对于这种操作一种幼稚的做法是轮询第二个字符串里的每个字母,看它是否同在第一个字符串里。从算法上讲,这需要
O(n*m)
次操作,其中n是string1的长度,m是string2的长度。就拿上面的例子来说,最坏的情况下将会有16*8 = 128次操作。一个稍微好一点的方案是先对这两个字符串的字母进行排序,然后同时对两个字串依次轮询。两个字串的排序需要(常规情况)
O(m log m) + O(n log n)
次操作,之后的线性扫描需要O(m+n)
次操作。同样拿上面的字串做例子,将会需要16*4 + 8*3 = 88加上对两个字串线性扫描的16 + 8 = 24的操作。(随着字串长度的增长,你会发现这个算法的效果会越来越好)哈希方法,对第一个字串进行轮询,把其中的每个字母都放入一个Hashtable里(成本是O(n)或16次操作)。然后轮询第二个字串,在Hashtable里查询每个字母,看能否找到。如果找不到,说明没有匹配成功。这将消耗掉8次操作 —— 这样两项操作加起来一共只有24次。不错吧,比前面两种方案都要好。
Guy的方案:假设我们有一个一定个数的字母组成字串 —— 我给每个字母分配一个素数,从2开始,往后类推。这样A将会是2,B将会是3,C将会是5,等等。现在我遍历第一个字串,把每个字母代表的素数相乘。你最终会得到一个很大的整数,对吧?然后 —— 轮询第二个字符串,用每个字母除它。如果除的结果有余数,这说明有不匹配的字母。如果整个过程中没有余数,你应该知道它是第一个字串恰好的子集了。“
-
字符串查找问题---长字符串查找短字符串
2020-03-21 12:03:23从算法是讲,什么方法能最快的查出所有小字符串里的字母在大字符串里都有? 比如,如果是下面两个字符串: String 1: ABCDEFGHLMNOPQRS String 2: DCGSRQPOM 答案是true,所有在string2里的字母string1也都有。如果...假设这有一个各种字母组成的字符串,假设这还有另外一个字符串,而且这个字符串里的字母数相对少一些。从算法是讲,什么方法能最快的查出所有小字符串里的字母在大字符串里都有?
比如,如果是下面两个字符串:
String 1: ABCDEFGHLMNOPQRS
String 2: DCGSRQPOM答案是true,所有在string2里的字母string1也都有。如果是下面两个字符串:
String 1: ABCDEFGHLMNOPQRS
String 2: DCGSRQPOZ答案是false,因为第二个字符串里的Z字母不在第一个字符串里。
1 常规的写法
暴力破解
一种幼稚的做法是轮询第二个字符串里的每个字母,看它是否同在第一个字符串里。从算法上讲,这需要O(n* m)次操作,其中n是string1的长度,m是string2的长度。就拿上面的例子来说,最坏的情况下将会有16*8 = 128次操作。
排序后匹配
一个稍微好一点的方案是先对这两个字符串的字母进行排序,然后同时对两个字串依次轮询。两个字串的排序需要(常规情况)O(m log m) + O(n log n)次操作,之后的线性扫描需要O(m+n)次操作。同样拿上面的字串做例子,将会需要164 + 83 = 88加上对两个字串线性扫描的16 + 8 = 24的操作。(随着字串长度的增长,你会发现这个算法的效果会越来越好)
hashtable匹配
最终,我告诉了他一个最佳的算法,只需要O(n+m)次操作。方法就是,对第一个字串进行轮询,把其中的每个字母都放入一个Hashtable里(成本是O(n)或16次操作)。然后轮询第二个字串,在Hashtable里查询每个字母,看能否找到。如果找不到,说明没有匹配成功。这将消耗掉8次操作 —— 这样两项操作加起来一共只有24次。不错吧,比前面两种方案都要好。
2 有趣的灵魂
”如果这样呢 —— 假设我们有一个一定个数的字母组成字串 —— 我给每个字母分配一个素数,从2开始,往后类推。这样A将会是2,B将会是3,C将会是5,等等。现在我遍历第一个字串,把每个字母代表的素数相乘。你最终会得到一个很大的整数,对吧?然后 —— 轮询第二个字符串,用每个字母除它。如果除的结果有余数,这说明有不匹配的字母。如果整个过程中没有余数,你应该知道它是第一个字串恰好的子集了。这样不行吗?“
以上来自:
http://www.aqee.net/post/google-interviewing-story.html -
字符串数组和字符串指针在进行字符串操作时的区别
2015-08-04 14:41:061、字符指针本身就是一个整型变量,用来存放指向某个字符串的地址,这个字符串是存放在以这个地址为起始的一串的地址空间中,最后一位自动添加 '\0';字符数组是用一个连续的空间来存放数值,最后并不会自动添加 '\0...我们都知道可以用数组还有指针来接收字符串,两者在存储字符串时还是有细微的差别的。下面来进行一下讨论,有不对的欢迎大家指正。
1、字符指针本身就是一个整型变量,用来存放指向某个字符串的地址,这个字符串是存放在以这个地址为起始的一串的地址空间中,最后一位自动添加 '\0';字符数组是用一个连续的空间来存放数值,最后并不会自动添加 '\0'.
2、字符串指针定义过程:
可以在定义时候直接赋值:char * a = {"i am a girl"};
也可以在定义之后再次赋值:char *a; a = (char *) malloc (sizeof(char) * 100); a = "i am a girl";
//一个字符串指针的例子,实现字符串反转 char *a ; a = (char *) malloc (sizeof(char) * 100); //定义一个指针,同时必须为它申请空间 scanf("%s", a); int len = strlen(a); int i = 0, j = len - 1; char temp = '\0'; while(i < j) //本功能块实现两个字符的交换功能,因为是单个字符可以直接交换赋值,如果是字符串必须要使用strcpy()! { temp = a[i]; a[i++] = a[j]; a[j--] = temp; } printf("%s", a); //此处用a, 而不是*a,具体机制还没有弄明白 (?)
3、字符数组定义过程:
定义时直接赋值
char a[100] = {'I', 'w', 'i', 't', '\0'};
不可以定义之后再赋值!
char a[100];
char = {'i','am','a','girl','\0'}; //编译不通过!!
4、几点注意:
定义指针时,编译器并不为指针所指向的对象分配空间,它只是分配指针本身的空间,除非在定义的同时赋值给指针一个字符串常量进行初始化。例如:下面的定义创建了一个字符串常量(为其分配了内存):
char *p=”abcdefg”;
注意只有对字符串常量才是如此,不能指望为浮点数之类的常量分配空间,如:
Float *p=3.14; /*错误,无法通过编译*/
需要这样定义,
float e = 0.13;
p = &e;
下面谈谈初始化指针时创建的字符串常量与数组中的字符串的区别:
在ANSI C中,初始化指针时所创建的字符串常量被定义为只读。如果试图通过指针修改这个字符串的值,程序就会出现未定义的行为。在有些编译器中,字符串常量被存放在只允许读取的文本段中,以防止它被修改。
数组也可以用字符串常量进行初始化:
Char a[]=”abcdefg”;如指针相反,由字符串常量初始化的数组是可以修改的。其中的单个字符在以后可以改变。
在内存机制中的区别:
#include<iostream> #include<vector> #include<string> using namespace std; int strlower(char *string) { if(string==NULL) { return -1; } while(*string) { if(isupper(*string)) *string=tolower(*string); string++; } *string='\0'; return 0; } int main(void) { char test[]="ABCDEFGhijklmN"; //编译通过 char *test = "abcdfESD"; //编译不通过,不可以在程序中再修改常量 strlower(test); cout<<test<<endl; system("pause"); }
-
实现字符串中子字符串的替换
2013-08-18 20:28:41实现字符串中子字符串的替换,看了几个用C实现的,都不对。其中有几种情况:1.被替换的字符串比替换字符串长。2.替换的字符串比被替换的字符串长。好像指针都没有搞好,比较难实现。下面是用C++实现的。主要是两个... -
C++ 字符串与字符数组 详解
2018-03-03 19:28:22在C++中,有两种类型的字符串表示形式: ...因此,一个以 null 结尾的字符串,包含了组成字符串的字符。 下面的声明和初始化创建了一个 “Hello” 字符串。由于在数组的末尾存储了空字符,所以... -
确定长字符串中是否含有短字符串的所有字母
2020-05-17 16:42:08假设这有一个各种字母组成的字符串,假设这还有另外一个字符串,而且这个字符串里的字母数相对少一些。从算法上讲,什么方法能最快的查出所有小字符串里的字母在大字符串里都有? 比如,如果是下面两个字符串: ... -
判断一个字符串里面的字符都是不相同的
2019-05-10 13:19:01判断一个字符串里面的字符都是不相同的。 解决思路 这个问题有很多种解决方案,并且可以根据字符串字符集的不同,可以做不同的优化。有下面几种解决问题的思路 遍历字符串中的字符与字符串中的其他的字符比较。 ... -
Golang 字符和字符串的区别
2020-08-02 18:59:29关于字符与字符串的区别: 字符: 单引号 往往只包含一个字符, 转义字符除外: \n 字符串: 双引号 字符串有一个或者多个字符组成 字符串都是隐藏了一个结束符: \0 下面通过代码来看一下两者的区别: package main ... -
IE兼容模式下面,js中的json字符串不能有多余的逗号
2014-04-15 15:13:32IE兼容模式下面,js中的json字符串不能有多余的逗号。 例如下面是不允许的 var json = { name: 'test' } -
java去掉指定字符串_Java字符串中删除指定子字符串的方法简介
2021-02-12 21:54:49有些字符串是我们存储某种类型名称的,往往有逗号‘,'或者其他符号来分隔。如果我们删除某一个参数时,往往没有数组或者列表那么方便。但是,如果有了下面这个方法,我们同样可以做好。public class Test3 {/*** @... -
字符串
2016-11-14 16:58:57字符串一、字符串常量大家一定要记得”a”是字符串常量,而’a’是字符常量。 所谓字符串就是有若干个字符常量组成以’\0’结尾的字符序列; 二、字符串的初始化 一般式: char str[6] = {'h', 'e', 'l', 'l', 'o'... -
python中一次替换字符串中的多个字符
2018-12-29 15:51:54比如下面给出的字符串a,有字母、'(单引号)、\n(换行符)、数字、:(冒号)、,(逗号),目标是只保留字符串中的数字和字母,且看我如何操作。 import re a='eew \' eawr,2 fd\n sa:21' b=re.sub(r'[\':\s ,... -
字符串数组 和 字符串指针 的区别
2016-12-02 23:29:36在C语言中,对字符串的操作主要有两种方式,一是使用字符数组,char str[];二是使用字符指针。那么二者有什么区别呢?下面将分述二者的使用,最后进行比较。 一、字符数组 使用char str[]定义一个... -
常见操作String的方法(截取子串,分割字符串,字符串的替换)
2021-01-29 00:05:06常见操作String的方法(截取子串,分割字符串,字符串的替换) ...调用时,括号中是需要提取字符串的开始位置,方法的返回值是要提取的字符串。例如: String str = "我爱 Java 编程"; String result = s -
一键替换整个工程下面某个字符串或者其他
2016-04-06 18:35:021.输入框里面输入你想要一键替换的字符串,一般可能是一些常用的宏,比如我图片上的一个宏定义,"Any"字样表示括号里面的为任意字符串,你可以点击那个搜索的图片选择其他含义的东西. 2.在搜索图片的下面 有一个"in ... -
Java的DataInputStream的readUTF方法是如何读取字符串的
2020-01-16 10:18:32在使用DataInputStream时候,经常会使用到readUTF来读取一段字符串,但是readUTF是如何知道该字符串有多长的呢? 下面的例子是对DataInputStream的简单使用: package s1; import java.io.BufferedInputStream; ... -
由字符串是否包含想到的字符串的排序
2012-08-01 21:29:56比如,如果是下面两个字符串: String 1: ABCDEFGHLMNOPQRS String 2: DCGSRQPOM 答案是true,所有在string2里的字母string1也都有。 如果是下面两个字符串: String 1: ABCDEFGHLMNOPQRS String 2: ... -
带有通配符的字符串和另一个字符串进行匹配
2013-05-09 15:07:33这个算法应用的是递归的算法,开始担心如果字符串过长的话,会因递归引起栈的溢出,还好在网上查了一下,win32默认的递归栈大小是2M,这足以进行很长字符串的匹配。 下面是核心的代码,思路都在代码的注释中,下面... -
python正则截取字符串_用python正则提取字符串的方法
2020-12-03 10:44:52在日常工作中经常遇见在文本中提取特定位置字符串的需求.python的正则性能好,很适合做这类字符串的提取,这里讲一下提取的技巧,正则表达式的基础知识就不说了,有兴趣的可以看re的教程. 提取一般分两种情况,一种是提取... -
两字符串对比,第二个字符串是否的字符在第一个字符串中是否全部存在
2012-09-05 13:54:53假设这有一个各种字母组成的字符串,假设这还有另外一个字符串,而且这个字符串里的字母数相对少一些。从算法上讲,什么方法能最快的查出所有小字符串里的字母在大字符串里都有? 比如,如果是下面两个字符串: ... -
mysql插入字符串带引号_如何向数据库插入带有单引号(')的字符串?
2021-01-21 18:09:29我们在编程当中,经常会遇到在操作数据库时,向表里插入带有单引号的字符串。如果不作处理程序会报错,下面看看我们是怎么的处理它的。用SQL语句往数据库某字段(字符型)中插入字符串,但是当该字符串中带有单引号(')... -
字符串中有‘\‘的特殊字符前面加转义符
2020-11-19 11:38:51字符串中有'\'的特殊字符前面加转义符 我们常常会遇到这样的问题,在输入框中输入包含特殊字符 \ 的文本去搜索的时候,我们输入的是什么样的传给后台的文本就是什么样的,比如:输入 “我的\” 或者 “我的\我的\\我... -
Java截取字符串中某一段的字符串
2019-05-31 11:25:00之前做了前端以layui为准的后台开发,因为做模糊查询的时候数据我根本不需要管,我只需要接受参数就行,但后台已经有弄好的模糊代码,我的sql也没办法直接用这种的数据,所以我需要截取下面这一段...//根据字符串的i... -
面试|有关字符串中字符出现重复字符的面试问题,这里都有了
2020-06-02 10:02:40下面是总结的一些常见问题,以供大家参考 第一次出现重复字符 出现的重复字符 出现字符串、字符还有次数 出现次数最多的字符的次数 class Eclass{ public static void main(String[] args) { String str = ... -
查找字符串中最长不含重复字符的子字符串,计算该最长子串的长度
2020-07-10 21:58:20算法题:查找一个字符串中最长不含重复字符的子字符串,计算该最长子字符串的长度; 下面将使用 滑动窗口 方法实现,并通过对滑动窗口算法一步步进行优化,使其空间和时间的消耗一步步降低; 什么是滑动窗口? ... -
什么方法能最快的查出所有小字符串里的字母在大字符串里都有?
2012-04-28 19:30:09本文纯属很多年以前在网上看到的比较好的东西,现在整理出来...从算法是讲,什么方法能最快的查出所有小字符串里的字母在大字符串里都有? 比如,如果是下面两个字符串: String 1: ABCDEFGHLMNOPQRS St -
给定一个字符串,请输出这个字符串由哪些字符组成,出现过多少次(统计字符串每个字符出现的次数)
2020-03-06 23:37:19有两种方法可以解决一种是利用HashMap解决 另一种是利用ASCII编码进行...给定一个长度,随机产生一个该长度的字符串,由大写小写字母以及数字组成 Java中随机数的生成 题目 给定一个字符串,请输出这个字符串由...