您好,我正在尝试在文本中的每个元音(A,E,I,O,U)之前添加字符串OB。我可以假定文本由所有大写字母组成,没有空格或标点符号。这些由我能够创建的其他方法处理。
这是我到目前为止的内容:
// Display the admin options page
function options_page_fn() {
?>
<div class="wrap">
<div class="icon32" id="icon-options-general"><br></div>
<h2>Settings</h2>
Here you can update the details of your options.
<form action="" method="post" name="options">
<?php settings_fields('plugin_options'); ?>
<?php do_settings_sections(__FILE__); ?>
<?php $opt_api = plugin_options['api_key']; ?>
<?php $opt_loc = plugin_options['loc_id']; ?>
<?php $opt_app = plugin_options['app_id']; ?>
<?php $opt_ulr = plugin_options['url']; ?>
<?php wp_nonce_field( 'options_save', 'options_save_nonce' ); ?>
<p class="submit">
<input name="submit" id="submit" type="submit" class="button-primary" value="<?php esc_attr_e('Save Changes'); ?>" />
</p>
</form>
</div>
<?php
if ( isset( $_POST['submit'] ) && ( $opt_api ) ) {
if ( isset( $_REQUEST[ 'options_save_nonce' ] ) && wp_verify_nonce( $_REQUEST[ 'options_save_nonce' ], 'options_save' ) ) {
$arr = array("api_key"=> $opt_api, "loc_id" => $opt_loc, "app_id" => $opt_app, "url" => $opt_ulr);
update_option('plugin_options', $arr);
echo "Updated" . $opt_api;
}else{
echo "Update Failed";
}
}
else {
echo "No API KEY";
}
}
但是当我通过它时,它会在第一个元音之前打印两个OB。 示例输入:HELLOWOLD,输出:HOBOBELLOBOWOBOLD
任何帮助将不胜感激。
答案 0 :(得分:4)
您可以使用正则表达式character class通过String#replaceAll
用“ OB {vowel}” 替换所有元音。例如
final String test = s.replaceAll("[AEIOU]", "OB$0");
$0
表示匹配的字符串,即元音。
在结果中得到重复的“ OB”字符串的原因是因为您的for循环。问题是您在每次迭代中都添加了更多的元音,即“ OB”中的“ O”,因此当您达到“ O”迭代时,它将替换您添加的元音。