- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我有一个字符串,其中可能使用了多种语言,例如:
این متن فارسی است and this is !!! in English
این خط بعدی است و this is going to be continued...
我只想反转英文单词,所以结果应该是这样的:
این متن فارسی است English in !!! is this and
این خط بعدی است و continued be to going is this...
对于要反转的文本,我得到:
public static function reverseEnglishWords($string)
{
return preg_replace_callback('/\w+/', function (array $m) { return strrev($m[0]); }, $string);
}
但它会反转所有字符。
编辑:这是目前最有效的方法:
<?php
$string = "
این یک تست جدید است
Is my English line working just fine?
I hope it does...
این یک جمله جدید است and this is to be continued in English...
";
$newStr = preg_replace_callback('/\w.*(?=\w|\b)/', function (array $m) {
return implode(" ", array_reverse(explode(" ", $m[0])));
}, $string);
echo $newStr;
唯一的问题是字符串 enf 中的某些字符,如 ?
和 ...
在上面的示例中放错了位置。当前结果是:
این یک تست جدید است
很好只是工作线英语我是?
是不是希望我...
اون یک جمله جدید است 英语继续是这个和...
应该是:
این یک تست جدید است
?很好只是工作线英语我是
……希望我
اون یک جمله جدید است ...英语继续是这个和
最佳答案
你可以使用
function reverseEnglishWords($string)
{
return preg_replace_callback('/(?!\s)[^\p{Arabic}\r\n]+/u', function ($m) {
$tmp = preg_replace_callback('~(\w+)([^\w\s]+)~', function($n) {
return strrev($n[2]) . $n[1];
}, $m[0]);
return implode(" ", array_reverse(
preg_split('~\s+~u', $tmp, -1, PREG_SPLIT_NO_EMPTY)
)
);
}, $string);
}
$s = "
این یک تست جدید است
Is my English line working just fine?
I hope it does...
Another one?!
این یک جمله جدید است and this is to be continued in English...
";
echo reverseEnglishWords($s);
查看 PHP demo 输出
این یک تست جدید است
?fine just working line English my Is
...does it hope I
!?one Another
این یک جمله جدید است ...English in continued be to is this and
这里,/(?!\s)[^\p{Arabic}\r\n]+/u
匹配一个或多个不属于阿拉伯文字且不是 CR 和 LF 的连续字符(以非空白字符开头)。匹配项被传递给 preg_replace_callback
匿名函数,其中首先使用另一个 preg_replace_callback
处理匹配项,以反转以字母开头并以标点符号结尾的单词中的字母和标点符号(参见 (\w+)([^\w\s]+)
正则表达式),然后用任何类型的 Unicode 空格拆分,同时丢弃空项(参见 preg_split('~\s+~u', $m[0], -1, PREG_SPLIT_NO_EMPTY)
), array_reverse
反转找到的“单词”数组,implode
用空格连接反转的项目。
关于php - 反转 "English"字造句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53516119/
我正在开发一个程序,可以将星球大战中的自然英语转换为尤达风格的英语。单个句子转换看起来不错,但当涉及多个句子时我遇到了问题。这是我的代码。 public class Yodify{ publi
是否有任何正则表达式模式可以改变这个字符串 This is a mix string of üößñ and English. üößñ üößñ are Unicode words. 为了这个? T
我打算发布一个社区网站,该网站的主要受众不是英语。这意味着指向/profile/forums 等的 URL 将是英文的,而不是他们的母语。我不关心用户是否在访问不同的英文 URL 路径时使用该网站,但
我正在处理包含英文和中文字符的字符串。我想挑出每个英语单词、非英语字符,例如法语、中文等,数字和特殊字符,例如“@#$%^&>?”以便进一步操作。 所以我累了 var nregex = /[^\u00
我在 Android-Chrome 上使用语音合成 API。问题是尽管有 4 种英语语音可用,但无论代码指定什么,浏览器始终使用美国英语。我可以使用其他语言,例如法语,而不是其他英语语音,例如 en-
我在英国,我有一个在英国购买的 Windows 7 版本,我可能找到的所有设置都设置为英国(而非美国)。当我运行以下代码时: Console.WriteLine(Thread.CurrentThrea
我在 MySQL 数据库表中有一个文本字段,其文本值混合了英文和非英文条目(假定以字母开头的字符串被视为英文)。 我想对值进行排序并在 HTML 下拉框中使用它。数据示例: Banana Apple
我有一个 html 如下 pomme English
我需要在 Android 设备中选择当前语言。当我使用以下代码时: Log.v("Language: ", Locale.getDefault().getDisplayLanguage()); Log
快速提问:我需要允许输入只接受从 a 到 z 和从 A 到 Z 的字母,但找不到任何表达式。我想使用 javascript test() 方法。 最佳答案 let res = /^[a-zA-Z]+$
我有一个字符串,其中可能使用了多种语言,例如: این متن فارسی است and this is !!! in English این خط بعدی است و this is going
我只是在使用这个最有用的链接:How do I check if a given string is a legal / valid file name under Windows? 在一些验证代码中
我喜欢加入一个数组,生成一个“英文列表”。例如 ['one', 'two', 'three'] 的结果应该是 'one, 2 and three'。 我写了这段代码来实现的(假设数组不为空,我的情况不
您好,请问有人可以将以下代码行翻译成英文吗? "foo".TrimEnd(New Char(0 - 1) {}) 我知道 TrimEnd 会做什么,但不知道 Char 位。 最佳答案 您发布的代码在
关闭。这个问题需要多问focused 。目前不接受答案。 已关闭10 年前。 已锁定。这个问题及其答案是locked因为这个问题是题外话,但却具有历史意义。目前不接受新的答案或互动。 有人可以用简单的
我正在尝试从Common Crawl阅读“英语”网页。我正在Amazon界面中运行这些Hadoop作业。请看下面的代码,那是Mapper的一部分。我没有 reducer 。 #!/usr/bin/ph
我是 scala 的新手,这更像是一个好奇的问题。 假设我有一个类 class Container() { def add(item: Item) ... } 我可以这样调用它:contain
{ "Actor": { "knownlanguages": [ "English" ] } } 此 JSON 存储在 MySQL 的 JSON columntyp
我有一个遗留类,其中包含 toLowerCase( Locale.ENGLISH ) 当我在客户端使用这个类时,我得到 [ERROR] [onboardingtool] Line 37: The me
我发现我可以应用属性 direction: rtl 来强制从右到左对齐: https://www.w3.org/International/questions/qa-html-dir 它还提到 HTM
我是一名优秀的程序员,十分优秀!