当前位置: 首页 > 知识库问答 >
问题:

使用php获取字符串中第一个大写字母的位置

丁钟展
2023-03-14

我有一个数组,其中每个单词中的不同字母都是大写的,如:

苹果、桔子、香蕉、芒果、木瓜

我想知道第一个大写字母的位置。并据此订购。有第一个字母大写的单词将是第一个,然后有第二个字母大写的单词将是第二个等等。。。喜欢

橙色
木瓜
苹果
芒果
香蕉

如果两个单词的大写字母位于同一位置,例如在上面的列表中Orange和Pappaya的第一个字母为大写字母,那么它们必须按字母顺序排序。

这在php中很难实现吗?

共有3个答案

归鹤龄
2023-03-14

如果你使用PHP

$test = array("aPple", "Orange", "baNana", "mANgo", "Papaya");

echo implode(', ', array_map(function($value){
    $matches = array();
    preg_match('/[A-Z]/', $value, $matches, PREG_OFFSET_CAPTURE);
    return $matches[0][1];
}, $test));

否则,您必须创建另一个函数来替换lambda函数。

输出:1,0,2,1,0

羊舌航
2023-03-14
preg_match("/^.*?[A-Z]/", 'aAple', $arr);

$str_position = (strlen($arr[0]) - 1);

你可以用很多方法来做这件事。使用您认为最符合逻辑的选项。:)

这个函数只是将字符串的第一部分返回到第一个大写字母。然后我计算字符串长度并减去1。

澹台季萌
2023-03-14

你可以使用strcspn()

查找不匹配掩码的初始段长度

例如:

echo strcspn('aAple', 'ABCDEFGHJIJKLMNOPQRSTUVWXYZ');
// prints '1' - the string starts with 1 character not in upper case

完整代码

echo "<pre>" ;
$array = array("aPple", "Orange", "baNana", "mANgo", "Papaya");
foreach($array as $value)
{
    echo $value , "= " , strcspn($value, 'ABCDEFGHJIJKLMNOPQRSTUVWXYZ') . PHP_EOL;
}

输出

aPple= 1
Orange= 0
baNana= 2
mANgo= 1
Papaya= 0

您可以使用该函数进行(反向)排序。

 类似资料:
  • 问题内容: 我需要获取字符串中第一个字母的位置。 遵循一个基本示例。第一个字母是,所以我需要知道的位置,因为我可以使用。 我想用正则表达式得到第一个字母,而不是添加硬编码的字母()。 提前致谢。 问题答案: 如果我正确阅读了Java文档,则说明您正在寻找match对象的方法:

  • 问题内容: 我想在angularjs中大写字符串的第一个字符 当我用它转换整个字符串为大写。 问题答案: 使用此大写过滤器

  • 将一个字符串的第一个字母(大写字母)变成小写。 使用数组解构和 String.toLowerCase() 将第一个字母变成小写,...rest 是获取第一个字母之后字符数组,然后使用 Array.join('') 使其再次拼接成为字符串。 省略 upperRest 参数来保持字符串的其余部分不变,或者将其设置为 true 来将字符串的其余部分转换为大写。 const decapitalize =

  • 问题内容: 我正在和熊猫打架,现在我正在失去。我有与此类似的源表: 我想从列“ First”中的值的第一位开始向该数据帧添加新列:a)从列“ First”中的字符串更改为数字b)从新创建的字符串中提取第一个字符c)来自b的结果另存为新的数据框中的列 我不知道如何将其应用于熊猫数据框对象。我将非常感谢您的帮助。 问题答案: 铸山坳来,你可以进行矢量化切片呼吁: 如果需要,可以再次调用列

  • 我试图使用一个preg_replace或类似的php函数:-识别字符串中的第一个全大写字母单词,-并在它后面直接插入一个字符(破折号或分号即可)-全大写字母单词应该是3个字符长或者更多。 到目前为止,我有一个正则表达式: 但是,这并不适用于只有3个字符的单词。我也不确定我是否“严格地”只看第一个单词。 我相信一旦我理清了正则表达式-这 将输出如下

  • 我正在尝试制作一个自动更正系统,当用户键入一个大写字母的单词时,自动更正就不起作用了。为了解决这个问题,我制作了一个字符串的副本。小写,然后比较它们。如果字符串确实输入错误,则应更正该单词。但是,替换键入的单词的单词都是小写的。所以我需要申请。大写字符串,仅限于第一个字母。我本来以为我可以用 但这显然不起作用。如何将字符串的第一个字母转换为大写,然后能够打印首字母大写的完整字符串? 感谢任何帮助!