标签: substr

PHP substr经过一定的char,一个substr + strpos优雅的解决方案?

让我们说我希望在一些针头char之后返回所有字符'x':

$source_str = "Tuex helo babe".

通常我会这样做:

if( ($x_pos = strpos($source_str, 'x')) !== FALSE )
   $source_str = substr($source_str, $x_pos + 1);
Run Code Online (Sandbox Code Playgroud)

你知道更好/更聪明(更优雅的方式)吗?

不使用regexp不会使它更优雅,也可能更慢.

不幸的是我们做不到:

$source_str = substr(source_str, strpos(source_str, 'x') + 1);
Run Code Online (Sandbox Code Playgroud)

因为什么时候'x'找不到strpos返回FALSE(而不是-1像JS那样). FALSE将评估为零,并且第一个字符将始终被切断.

谢谢,

php substr strpos

17
推荐指数
2
解决办法
5万
查看次数

JavaScript中的slice()和substr()有什么区别?

我可以问一下string对象slice()substr()JavaScript 之间的区别是什么?

javascript substr slice

17
推荐指数
2
解决办法
8153
查看次数

在每三个字符之间加上破折号

关于如何在每个第3个角色中添加破折号我遇到了问题.例如,我想要

ABCDEF turn into ABC-DEF
Run Code Online (Sandbox Code Playgroud)

我有这个代码:

$string = 'ABCDEF';
echo substr_replace(chunk_split($string,3),'-','3','2');
// the output is ABC-DEF
Run Code Online (Sandbox Code Playgroud)

但是,如果我向$ string变量添加更多字符,则此代码不起作用ABCDEFGHI.如果我使用上面的代码,输出将是:

ABC-DEF GHI
Run Code Online (Sandbox Code Playgroud)

php string replace substr

14
推荐指数
2
解决办法
1万
查看次数

如何从字符串中获取第一个x字符,而不切断最后一个字?

我在变量中有以下字符串.

Stack Overflow is as frictionless and painless to use as we could make it.

我想从上面的行中获取前28个字符,所以通常如果我使用substr然后它会给我Stack Overflow is as frictio这个输出,但我想输出为:

Stack Overflow is as...

PHP中是否有任何预制函数可以这样做,或者请在PHP中为我提供此代码?

编辑:

我想要从字符串中总共28个字符而不会破坏一个单词,如果它会让我少于28个字符而不会破坏一个单词,那很好.

php string substr

13
推荐指数
2
解决办法
2万
查看次数

使用substr修剪Oracle上的字符串

我想将一个字符串修剪为指定的长度.如果字符串较短,我不想做任何事情.我发现了一个函数substr()来完成这项工作.但是,Oracle文档中没有任何内容,如果字符串比最大长度更短,会发生什么.

例如:

select substr('abc',1,5) from dual;
Run Code Online (Sandbox Code Playgroud)

返回'abc',这就是我需要的.

我想问一下这是否安全,因为函数似乎没有为此用法定义.有没有更好的方法来截断?

sql oracle plsql substr

12
推荐指数
3
解决办法
4万
查看次数

mysql中REGEXP_SUBSTR的等价物是什么?

我想从表的字符串列中提取一个单词.

description
===========================
abc order_id: 2 xxxx yyy aa
mmm order_id: 3 nn kk yw
Run Code Online (Sandbox Code Playgroud)

预期结果集

order_id
===========================
2
3
Run Code Online (Sandbox Code Playgroud)

表最多有100行,文本长度为~256个字符,列总是有一个order_id存在.因此,性能不是问题.

在Oracle中,我可以使用REGEXP_SUBSTR此问题.我如何在MySQL中解决这个问题?

编辑1

我正在使用LOCATE和SUBSTR来解决问题.代码很难看.编写代码十分钟后,我正在诅​​咒编写如此丑陋代码的人.

我没有在MySQL文档中找到REGEXP_SUBSTR函数.但我希望它存在..

回答:为什么不能优化表格?为什么数据以这种愚蠢的方式存储?

我给出的例子只是表示我试图解决的问题.在实际情况中,我使用基于数据库的第三方排队软件来执行异步任务.队列将Ruby对象序列化为文本.我无法控制表结构或数据格式.队列中的任务可以重复出现.在我们的测试设置中,由于过时的数据,一些重复的任务失败了.我必须删除这些任务以防止错误.这种错误并不常见,因此我不想维护规范化的影子表.

regex mysql sql substr

11
推荐指数
3
解决办法
2万
查看次数

Pascal substr等价物

我正在寻找一个Pascal等价物(例如)php的substr函数,它的工作原理如下:

$new_string = substr('abcdef', 1, 3);  // returns 'bcd'
Run Code Online (Sandbox Code Playgroud)

我已经找到了它,但我总是花费太长时间才这样做,所以我发布了像我这样的其他人的答案,以便能够轻松找到它.

pascal substring substr

11
推荐指数
1
解决办法
2万
查看次数

替换第二列和第三列的最后 4 位数字

我有一个文件如下:

2300
10     1112221234     111222123420231121PPPPD10+0000000850      ESIM
10     3334446789     333444678920231121PPPPD11+0000000950      RSIM
23
Run Code Online (Sandbox Code Playgroud)

我希望结果如下:

2300
10     1112222345     111222234520231121PPPPD10+0000000850      ESIM
10     3334447890     333444789020231121PPPPD11+0000000950      RSIM
23
Run Code Online (Sandbox Code Playgroud)

我尝试使用以下代码,并能够替换第二列中的最后 4 位数字和第三列中日期之前的最后 4 位数字。但它还删除了第三列中从第 11 位开始的多余空格以及字母/数字,并得到以下结果:

2300
10 1112222345 1112222345 ESIM
10 3334447890 3334447890 RSIM
23

awk '
BEGIN { FS=OFS=" " }
{if(length($2)>9 && length($3)>9)
   {$2 = substr($2,-10)
   $3 = substr($3,1,10) 
    for (i=2;i<=3;i++) {                                   
        str = substr($i, 1, length($i) - 4)                 
        for (j = length($i) - 3; j <= length($i); j++) {    
            str = str (substr($i, …
Run Code Online (Sandbox Code Playgroud)

linux awk replace substr

11
推荐指数
3
解决办法
1095
查看次数

正则表达式字符串和子字符串

我有一个字符串'aabaacaba'.从左边开始,我试图得到所有大小> = 2的子串,后面会出现在字符串中.例如,aa再次出现在字符串中,情况也是如此ab.

我写了以下正则表达式代码:

re.findall(r'([a-z]{2,})(?:[a-z]*)(?:\1)', 'aabaacaba')
Run Code Online (Sandbox Code Playgroud)

我得到['aa']作为答案.正则表达式错过了ab模式.我认为这是因为人物重叠.请建议一个解决方案,以便修复表达式.谢谢.

python regex substr

10
推荐指数
1
解决办法
377
查看次数

为什么substr不会在字符串的末尾返回undef?

我不确定这是否是定义的行为.我有以下代码:

use strict;
use warnings;
use Data::Dumper;

my $string = 'aaaaaa0aaaa';
my $char = substr($string, length($string), 1);
my $char2 = substr($string, length($string)+1, 1);

print Dumper($char);
print Dumper($char2);
Run Code Online (Sandbox Code Playgroud)

除了收到关于substr()字符串结尾的一个警告之外,我对输出感到困惑:

$VAR1 = '';
$VAR1 = undef;
Run Code Online (Sandbox Code Playgroud)

Perldocsubstr:

substr EXPR,OFFSET,LENGTH

如果OFFSET和LENGTH指定部分位于字符串外部的子字符串,则仅返回字符串中的部分.如果子字符串超出字符串的任何一端,则substr()返回未定义的值并产生警告.

双方length($string)length($string) + 1超出字符串的(零索引)结束,所以我不知道为什么substr在一种情况下,返回空字符串undef中的其他.它是否与C用于字符串终止的NULL字符有关,并且substr在第一种情况下以某种方式返回,因此该字符串有一个"不可见"的最后一个字符,不计入length?我错过了一些明显的东西吗?

perl substr

9
推荐指数
2
解决办法
1162
查看次数

标签 统计

substr ×10

php ×3

regex ×2

replace ×2

sql ×2

string ×2

awk ×1

javascript ×1

linux ×1

mysql ×1

oracle ×1

pascal ×1

perl ×1

plsql ×1

python ×1

slice ×1

strpos ×1

substring ×1