我必须将用户输入的每个单词的第一个字母转换为大写。我不认为我做得对,所以它不起作用,但我不确定哪里出错了D:提前感谢您的帮助! ^^
public function isFavori(users $user, contacts $contacts) {
$em = $this->getEntityManager();
$qb = $em->createQueryBuilder('c');
$userid = $user->getId();
$contactId = $contacts->getId();
$query = $qb
->select('1')
->from('contactsBundle:contactsfavoris','cf')
->where('cf.user = :user')
->andWhere('cf.contact = :contact')
->setParameter('user', $userid)
->setParameter('contact', $contacts)
;
try {
$result = $qb->getQuery()->getSingleScalarResult();
} catch (Exception $e) {
$result = 0;
}
if ($result == 1 ) {
$favori = true;
} else {
$favori = false;
}
return $favori;
}
答案 0 :(得分:6)
如果您的练习不是正则表达式操作,那么有内置实用程序可以执行您所要求的操作:
System.Globalization.TextInfo ti = System.Globalization.CultureInfo.CurrentCulture.TextInfo;
string titleString = ti.ToTitleCase("this string will be title cased");
Console.WriteLine(titleString);
打印:
此字符串将标题为
如果您的操作是针对正则表达式,请参阅此前的StackOverflow答案:Sublime Text: Regex to convert Uppercase to Title Case?
答案 1 :(得分:1)
首先,你的正则表达式“^”匹配一行的开头。如果您需要匹配多字词行中的每个字,则需要使用不同的正则表达式,例如“[A-ZA-Z]”。
你也没有做任何事情来实际将第一个字母更改为大写。请注意,C#中的字符串是不可变的(它们在创建后无法更改),因此您需要创建一个新字符串,其中包含原始字符串的第一个字母,上部字符串,后跟字符串的其余部分。自己试试这个部分。如果您遇到问题,请尝试发布新问题。
答案 2 :(得分:1)
string pattern = "(?:^|(?<= ))(.)"
^
不会自行捕获任何内容。您可以通过将函数应用于uppercase letters
来替换为$1
。请参阅演示。
答案 3 :(得分:0)
我希望这可能有所帮助
public static string CapsFirstLetter(string inputValue)
{
char[] values = new char[inputValue.Length];
int count = 0;
foreach (char f in inputValue){
if (count == 0){
values[count] = Convert.ToChar(f.ToString().ToUpper());
}
else{
values[count] = f;
}
count++;
}
return new string(values);
}
答案 4 :(得分:0)
使用正则表达式执行此操作的另一种方法:
var Comments = React.createClass({
render: function () {
return (
<div className="comments">
<CommentList/>
<CommentForm/>
</div>
);
}
});
React.render(<Comments/>, document.getElementById("example"));
答案 5 :(得分:0)
我会使用Model Extensions来解决这个问题。
PHP有一个很好的方法叫做ucfirst。 所以我将其翻译成C#
public static string UcFirst(this string s)
{
var stringArr = s.ToCharArray(0, s.Length);
var char1ToUpper = char.Parse(stringArr[0]
.ToString()
.ToUpper());
stringArr[0] = char1ToUpper;
return string.Join("", stringArr);
}
用法:
[Test]
public void UcFirst()
{
string s = "john";
s = s.UcFirst();
Assert.AreEqual("John", s);
}
显然,你仍然需要将你的句子分成一个列表,并为列表中的每个项目调用UcFirst。
Google C#模型扩展程序,如果您需要有关正在进行的操作的帮助。