当前位置: 首页 > 面试题库 >

怎么把PascalCase转换成pascal_case?

朱淮晨
2023-03-14
问题内容

如果我有:

$string = "PascalCase";

我需要

"pascal_case"

PHP是否为此提供功能?


问题答案:

尝试以下尺寸:

$tests = array(
  'simpleTest' => 'simple_test',
  'easy' => 'easy',
  'HTML' => 'html',
  'simpleXML' => 'simple_xml',
  'PDFLoad' => 'pdf_load',
  'startMIDDLELast' => 'start_middle_last',
  'AString' => 'a_string',
  'Some4Numbers234' => 'some4_numbers234',
  'TEST123String' => 'test123_string',
);

foreach ($tests as $test => $result) {
  $output = from_camel_case($test);
  if ($output === $result) {
    echo "Pass: $test => $result\n";
  } else {
    echo "Fail: $test => $result [$output]\n";
  }
}

function from_camel_case($input) {
  preg_match_all('!([A-Z][A-Z0-9]*(?=$|[A-Z][a-z0-9])|[A-Za-z][a-z0-9]+)!', $input, $matches);
  $ret = $matches[0];
  foreach ($ret as &$match) {
    $match = $match == strtoupper($match) ? strtolower($match) : lcfirst($match);
  }
  return implode('_', $ret);
}

输出:

Pass: simpleTest => simple_test
Pass: easy => easy
Pass: HTML => html
Pass: simpleXML => simple_xml
Pass: PDFLoad => pdf_load
Pass: startMIDDLELast => start_middle_last
Pass: AString => a_string
Pass: Some4Numbers234 => some4_numbers234
Pass: TEST123String => test123_string

这实现了以下规则:

  1. 以小写字母开头的序列后必须跟小写字母和数字;
  2. 以大写字母开头的序列后面可以是:
    • 一个或多个大写字母和数字(后跟字符串的结尾或大写字母,后跟小写字母或数字,即下一个序列的开头);要么
    • 一个或多个小写字母或数字。


 类似资料:
  • 问题内容: 我有一个WSDL文件,我需要将其转换为Java,为此,我使用下面链接中的分步过程 http://axis.apache.org/axis2/java/core/tools/eclipse/wsdl2java- plugin.html 就像将axis2 codegen jar文件添加到eclipse文件夹中的dropins文件夹中并重新启动eclipse一样,但是我在eclipse ID

  • 问题内容: 我正在开发一个Web应用程序,其中将在客户端和服务器端之间传输数据。 我已经知道JavaScript int!= Java int。因为,Java int不能为null,对。现在这是我面临的问题。 我将Java int变量更改为Integer。 我的问题在这里: 我不能在这里使用Integer变量。我尝试过, 但这会使事情变得更复杂。我们还有其他 转换方法或转换技术吗? 任何修复都会更

  • 问题内容: 我有一个相当于毫秒的字符串。我尝试使用哪个给出毫秒,包括当前日期。我只需要String表示形式到毫秒。我是否必须编写自定义方法,该方法将拆分并计算毫秒?还是有其他方法可以做到这一点?谢谢。 我尝试如下: 问题答案: 您可以用来做。您只需要知道两件事。 所有日期均以UTC内部表示 返回自1970-01-01 00:00:00 UTC以来的毫秒数。

  • 问题内容: 我有一个表格来说明事件的持续时间。说,活动将持续15分钟。因此该字段将具有以下值:00:15如果要持续1小时:01:00,依此类推。 如何创建带有字符串“ HH:MM” 的Joda时间 持续时间对象? 在Joda-Time主页上,它提到可以分别使用ConverterManager和DurationConverter从指定对象创建Duration对象。 我的问题是,如何实现上述接口,以便

  • 问题内容: 我正在尝试在数据库中设置服务器不可知日期时间,并且我相信这样做的最佳做法是设置UTC DateTime。我的数据库服务器是Cassandra,Java的数据库驱动程序仅理解Date类型。 因此,假设在我的代码中我正在使用新的Java 8 ZonedDateTime立即获取UTC(),如何将ZonedDateTime实例转换为“旧版” Date类? 问题答案: 您可以将ZonedDate

  • 问题内容: 我试图在执行更多计算之前将TimeZone信息简单地添加回LocalDate中。LocalDate来自使用ObjectLab LocalDateCalculator将天数添加到现有DateTime中,但是该方法需要返回修改后的ReadableInstant来形成一个Interval,然后可以检查该Interval。 我正在尝试的代码相当于将Joda LocalDate转换为Joda D